+static int
+test_rmlvo(const char *rules, const char *model, const char *layout,
+ const char *variant, const char *options)
+{
+ return do_test_rmlvo(rules, model, layout, variant, options, 0);
+}
+
+static int
+test_rmlvo_silent(const char *rules, const char *model, const char *layout,
+ const char *variant, const char *options)
+{
+ return do_test_rmlvo(rules, model, layout, variant, options, 1);
+}
+
+static void
+benchmark(void)
+{
+ struct timespec start, stop, elapsed;
+ int i;
+
+ clock_gettime(CLOCK_MONOTONIC, &start);
+ for (i = 0; i < BENCHMARK_ITERATIONS; i++)
+ assert(test_rmlvo_silent("base", "", "us", "", ""));
+ 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);
+}
+
+int main(int argc, char *argv[])