Commit Graph

123 Commits (a54cfe087a2b84d5cb44f4dfa0e5951f8289ca3c)

Author SHA1 Message Date
Ran Benita c8e17eede5 bench: simplify the bench helpers
Trim the API a bit.

Also, just always use gettimeofday(), which is portable. Hopefully the
system clock doesn't change while a benchmark is running.

Signed-off-by: Ran Benita <ran234@gmail.com>
2018-07-05 18:29:39 +03:00
Ran Benita b2529f2a88 build/autotools: remove redundant ACLOCAL_AMFLAGS
Will be deprecated in automake 2.0.

Replaced by AC_CONFIG_MACRO_DIR (already present) which is available
since autoconf 2.63.

Signed-off-by: Ran Benita <ran234@gmail.com>
2018-02-27 12:36:20 +02:00
Ran Benita 767fa86d42 Convert http:// -> https:// where possible
Signed-off-by: Ran Benita <ran234@gmail.com>
2017-12-21 14:18:07 +02:00
Ran Benita b82e3b764e Bump version to 0.8.0
Signed-off-by: Ran Benita <ran234@gmail.com>
2017-12-15 21:41:51 +02:00
Ran Benita 5c9042127f build: disable -Wdocumentation-deprecated-sync
We will never remove the deprecated functions and there is no real
reason to annoy users into stop using them.

If there *will* be a reason, *then* we will add the attribute.

Fixes: https://github.com/xkbcommon/libxkbcommon/issues/56
Signed-off-by: Ran Benita <ran234@gmail.com>
2017-12-14 17:56:18 +02:00
Ran Benita 76348754e3 build: add missing configure function checks for test/interactive-wayland
Signed-off-by: Ran Benita <ran234@gmail.com>
2017-08-16 20:23:54 +03:00
Ran Benita ba9568bdb1 Bump version to 0.7.2
Signed-off-by: Ran Benita <ran234@gmail.com>
2017-08-04 16:28:36 +03:00
Ran Benita 2a16c3c482 build/autotools: fix symbol versioning configure check
Regressed in 4309735. I thought `$top_srcdir` works in configure too,
apparently not!

See: https://github.com/xkbcommon/libxkbcommon/issues/50#issuecomment-319693694

Signed-off-by: Ran Benita <ran234@gmail.com>
2017-08-02 18:34:29 +03:00
Ran Benita 2f6616a571 build: remove -uninstalled pkg-config files
Meson doesn't support them directly, and I don't think anyone is using
them.

Signed-off-by: Ran Benita <ran234@gmail.com>
2017-07-31 18:28:28 +03:00
Ran Benita 4309735de3 build: use top_srcdir consistently
Signed-off-by: Ran Benita <ran234@gmail.com>
2017-07-31 15:55:48 +03:00
Daniel Stone 90bd9fdb01 interactive-wayland: Port to xdg-shell v6
Mutter only implements v6 now, and Weston also implements that. Port
interactive-wayland to this so people can keep on using it.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2017-04-11 15:09:50 +01:00
Ran Benita 877fe59ac3 Bump version to 0.7.1
Signed-off-by: Ran Benita <ran234@gmail.com>
2017-01-18 20:17:46 +02:00
Ran Benita b5586a6c42 keysym: fix locale dependence in xkb_keysym_from_name()
We currently use strcasecmp, which is locale-dependent. In particular,
one well-known surprise even if restricted just ASCII input is found in
the tr_TR (Turkish) locale, see e.g.
https://msdn.microsoft.com/en-us/library/ms973919.aspx#stringsinnet20_topic5

We have known to avoid locale-dependent functions before, but in this
case, we forgot.

Fix it by implementing our own simple ASCII-only strcasecmp/strncasecmp.
Might have been possible to use strcasecmp_l() with the C locale, but
went the easy route.

Side advantage is that even this non-optimized version is faster than
the optimized libc one (__strcasecmp_l_sse42) since it doesn't need to
do the locale stuff. xkb_keysym_from_name(), which uses strcasecmp
heavily, becomes faster, and so for example Compose file parsing, which
uses xkb_keysym_from_name() heavily, becomes ~20% faster.

Resolves https://github.com/xkbcommon/libxkbcommon/issues/42
Signed-off-by: Ran Benita <ran234@gmail.com>
2016-12-02 23:46:56 +02:00
Ran Benita d596f6e3ff Bump version to 0.7.0
Signed-off-by: Ran Benita <ran234@gmail.com>
2016-11-11 20:02:41 +02:00
Ran Benita 9061171957 utils: add popcount function
Signed-off-by: Ran Benita <ran234@gmail.com>
2016-10-22 20:13:46 +03:00
Daniel Stone 7e123a10b6 test: Add interactive-wayland
interactive-wayland is very similar to x11/xev, and dumps out as much
state as possible.

It provides no titlebar and a completely random cursor, but such is
life.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2016-04-12 12:15:04 +01:00
Daniel Stone 03f5d36b44 Bump version to 0.6.1
Our most minor release yet.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2016-04-08 10:38:57 +01:00
Ran Benita 3fee46a218 Bump version to 0.6.0
Signed-off-by: Ran Benita <ran234@gmail.com>
2016-03-16 10:20:49 +02:00
Kazunobu Kuriyama 3c12d671cc bench: Modify benchmarks for a wider range of platforms
- Add the new files bench.c and bench.h to implement a timer module.
 - Implement the module with clock_gettime(), mach_absolute_time(), or
   gettimeofday(), depending on a given platform.
 - Replace the time measurement code of the benchmark programs with the
   functions of the module.
2015-08-28 20:02:26 +09:00
Ran Benita 257e38c821 build: don't fail if linker version scripts are not supported
Some platforms (such as OSX) do not support version scripts. In these
platforms the symbols will not be versioned, but it is OK to omit them.

https://github.com/xkbcommon/libxkbcommon/issues/24
2015-07-17 23:26:20 +03:00
Ran Benita ca58937da3 configure.ac: also print ${datarootdir} in summary
It goes something like:

    ${XLOCALEDIR} ->
    ${datarootdir}/locale/X11 ->
    ${prefix}/share/locale/X11 ->
    /usr/share/locale/X11

But AC_MSG_RESULT only performs one substitution. Instead of starting to
expand this stuff manually, just print datarootdir so all the pieces are
there.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-10-24 23:40:24 +03:00
Ran Benita c43c3c866e Bump version to 0.5.0
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-10-18 16:41:59 +03:00
Jasper Lievisse Adriaanse dff65c0c70 disable -Wl,--no-undefined on OpenBSD for it doesn't have DT_NEEDED for libc 2014-10-16 11:35:18 +02:00
Jasper Lievisse Adriaanse 3e169c4726 Make librt optional, required for at least OpenBSD 2014-10-15 21:08:17 +02:00
Ran Benita edc98b5403 compose: add xkbcommon-compose - implementation
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-10-05 12:56:46 +03:00
Ran Benita 64fec8f31a configure.ac: add -Wdocumentation
It's supported by clang and warns about bad doxygen comments.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-09-11 12:15:31 +03:00
Michael Forney 76ae9fb948 Fix typo in default-variant configure option 2014-09-01 13:09:29 -07:00
Ran Benita 76016d5121 Bump version to 0.4.3
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-08-19 20:17:16 +03:00
Ran Benita 76e1fca20a Bump version to 0.4.2
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-05-15 12:07:00 +03:00
Ran Benita 99af72fd09 configure.ac: fix enable_x11 handling
Explicitly passing --enable-x11=yes would actually disable it.

Reported-by: Quentin Glidic
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-03-31 18:01:35 +03:00
Ran Benita b5b86b6e7a Bump version to 0.4.1
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-03-27 21:00:58 +02:00
Ran Benita f604314962 configure.ac: fix message when X11 support is disabled
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-03-21 19:54:30 +02:00
Ran Benita 1aabc52235 build: fix configure test for yacc
It only works if 'bison' or 'byacc' are provided, but sometimes byacc
is installed as plain 'yacc'. The check fails for that.

I broke this in bdd8c11, restore Daniel's retrospectively clever check.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 20:50:58 +02:00
Ran Benita 10643d8aa4 Define likely()/unlikely() macros
It serves as nice "hotspot" annotations, and can also help things, so
why not.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 12:42:16 +02:00
Ran Benita 8aa2202d9d build: add -Wextra warnings
If it gets annoying, we can disable it. But for now it's clean.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 01:51:38 +02:00
Ran Benita 109fe7059c Use secure_getenv when available
We probably don't want to get a privileged process to compile arbitrary
keymaps. So we should be careful about the envvars which control include
paths or default RMLVOs. But then secure_getenv is more sensible for
everything we do.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-04 02:53:05 +02:00
Ran Benita bdd8c113a5 build: some fixes in configure.ac
- Use 'test =' instead of 'test ==' in the x11 test. The second one
  might not work with e.g. dash, whoops.

- Use AS_IF instead of 'if'. It actually blends in better..

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-04 02:52:31 +02:00
Ran Benita be16858c92 Bump version to 0.4.0
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-02 12:13:26 +02:00
Ran Benita 70717c5686 build: add configure summary
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-02 11:21:18 +02:00
Ran Benita eb34825560 x11: add XKB protocol keymap and state creation support
These are function to create an xkb_keymap directly from XKB requests
to the X server. This opens up the possibility for X clients to use
xcb + xcb-xkb + xkbcommon as a proper replacement for Xlib + xkbfile for
keyboard support.

The X11 support must be enabled with --enable-x11 for now.
The functions are in xkbcommon/xkbcommon-x11.h. It depends on a recent
libxcb with xkb enabled. The functions are in a new libxkbcommon-x11.so,
with a new pkg-config file, etc. so that the packages may be split, and
libxkbcommon.so itself remains dependency-free.

Why not just use the RMLVO that the server puts in the _XKB_RULES_NAMES
property? This does not account for custom keymaps, on-the-fly keymap
modifications, remote clients, etc., so is not a proper solution in
practice. Also, some servers don't even set it. Now, the client just
needs to recreate the keymap in response to a change in the server's
keymap (as Xlib clients do with XRefreshKeyboardMapping() and friends).

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-02 11:16:40 +02:00
Ran Benita ddbefda383 build: error out on undefined symbols
This helps ensure we don't ship a library with undefined symbols, which
can easily happen with multiple inter-dependent DSOs.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-01-13 18:24:24 +02:00
Ran Benita 8deff4f0ab Bump version to 0.3.2
Add a NEWS file, with some retroactive entries. Also add 'check-news' to
configure.ac, though this might be a bit annoying.

Signed-off-by: Ran Benita <ran234@gmail.com>
2013-11-22 21:02:24 +02:00
Ran Benita 14382a62ab configure.ac: add AM_PROG_CC_C_O
Older Automakes give this error without this directive:

Makefile.am: C objects in subdir but `AM_PROG_CC_C_O' not in `configure.ac'

In newer autotools this is included under AC_PROG_CC, but it's harmless
to add.

https://github.com/xkbcommon/libxkbcommon/issues/3

Signed-off-by: Ran Benita <ran234@gmail.com>
2013-10-13 22:25:24 +03:00
Ran Benita 8e14bff0a1 parser: add some notes about byacc working
We now also work with byacc (version tested: 20130925) which some people
prefer, perhaps due to its license (public domain) or performance
(haven't compared).

When using byacc, currently the following warning comes up:
    src/xkbcomp/parser.c:954:14: warning: declaration shadows a variable in the global scope [-Wshadow]
        YYSTYPE  yylval;
                ^
    src/xkbcomp/parser.c:37:20: note: expanded from macro 'yylval'
    #define yylval     _xkbcommon_lval
                    ^
    ./src/xkbcomp/parser.h:96:16: note: previous declaration is here
    extern YYSTYPE _xkbcommon_lval;

This is due to a bug in byacc - it shouldn't output that extern line in
%pure-parser mode. So the warning stays.

Signed-off-by: Ran Benita <ran234@gmail.com>
2013-09-29 01:41:52 +03:00
Ran Benita f505c4314e build: use AC_CONFIG_AUX_DIR([build-aux])
Less clutter, why not?

Signed-off-by: Ran Benita <ran234@gmail.com>
2013-08-15 09:58:50 +03:00
Daniel Stone 9f01bd1e72 Bump version to 0.3.1
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2013-06-03 16:43:43 +01:00
Ran Benita a392d2682b Replace flex scanner with a hand-written one
The scanner is very similar in structure to the one in xkbcomp/rules.c.
It avoids copying and has nicer error reporting.

It uses gperf to generate a hashtable for the keywords, which gives a
nice speed boost (compared to the naive strcasecmp method at least). But
since there's hardly a reason to regenerate it every time and require
people to install gperf, the output (keywords.c) is added here as well.

Here are some stats from test/rulescomp:

Before:
compiled 1000 keymaps in 4.052939625s
==22063==   total heap usage: 101,101 allocs, 101,101 frees, 11,840,834 bytes allocated

After:
compiled 1000 keymaps in 3.519665434s
==26505==   total heap usage: 99,945 allocs, 99,945 frees, 7,033,608 bytes allocated

Signed-off-by: Ran Benita <ran234@gmail.com>
2013-04-01 18:20:57 +01:00
Ran Benita e4bceec880 utils: add {un,}map_file to read an entire file
This wraps the current mmap call and adds a fallback implementation for
systems which do not have mmap (e.g. mingw).

Signed-off-by: Ran Benita <ran234@gmail.com>
2013-04-01 18:20:56 +01:00
Daniel Stone 27a11762ab Bump version to 0.3.0
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2013-04-01 18:04:06 +01:00
Daniel Stone fbe5e6751e Add environment overrides for default RMLVO
You can now set default values in the environment, as well as a context
option to ignore the environment, e.g. for tests.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2013-03-19 10:53:37 +00:00