summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch55
-rw-r--r--patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch24
-rw-r--r--patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch527
-rw-r--r--patches/cbenchsuite-1.0/series6
-rw-r--r--rules/cbenchsuite.in14
-rw-r--r--rules/cbenchsuite.make67
6 files changed, 693 insertions, 0 deletions
diff --git a/patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch b/patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch
new file mode 100644
index 000000000..9031399c4
--- /dev/null
+++ b/patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch
@@ -0,0 +1,55 @@
+From: Markus Pargmann <mpa@devmp.org>
+Date: Wed, 3 Jun 2015 11:06:02 +0200
+Subject: [PATCH] module_manager: Fix directory detection
+
+d_type may be incorrect. Use fstatat as fallback.
+
+Signed-off-by: Markus Pargmann <mpa@devmp.org>
+---
+ src/core/module_manager.c | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/module_manager.c b/src/core/module_manager.c
+index 77931ce97727..3f30042d22f1 100644
+--- a/src/core/module_manager.c
++++ b/src/core/module_manager.c
+@@ -27,6 +27,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/types.h>
++#include <sys/stat.h>
+
+ #include <klib/list.h>
+ #include <klib/printk.h>
+@@ -191,10 +192,30 @@ int mod_mgr_init(struct mod_mgr *mm, const char *mod_dir)
+ }
+
+ while ((de = readdir(md))) {
+- if (de->d_type != DT_DIR) {
++ struct stat st;
++ int ret;
++
++ if (de->d_type != DT_UNKNOWN && de->d_type != DT_DIR) {
+ printk(KERN_DEBUG "%s is no directory, continuing\n",
+ de->d_name);
+ continue;
++ } else if (de->d_type == DT_UNKNOWN) {
++ /*
++ * d_type may not be available on a filesystem, check
++ * again with fstatat
++ */
++ ret = fstatat(dirfd(md), de->d_name, &st, 0);
++ if (ret) {
++ printk(KERN_ERR "Failed to stat %s\n",
++ de->d_name);
++ return ret;
++ }
++
++ if (!S_ISDIR(st.st_mode)) {
++ printk(KERN_DEBUG "%s is no directory, continuing\n",
++ de->d_name);
++ continue;
++ }
+ }
+ if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
+ continue;
diff --git a/patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch b/patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch
new file mode 100644
index 000000000..6765f8fcd
--- /dev/null
+++ b/patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch
@@ -0,0 +1,24 @@
+From: Markus Pargmann <mpa@devmp.org>
+Date: Wed, 3 Jun 2015 11:06:54 +0200
+Subject: [PATCH] module_manager: Ignore hidden directories as well
+
+Signed-off-by: Markus Pargmann <mpa@devmp.org>
+---
+ src/core/module_manager.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/module_manager.c b/src/core/module_manager.c
+index 3f30042d22f1..2ced58c37ed1 100644
+--- a/src/core/module_manager.c
++++ b/src/core/module_manager.c
+@@ -217,7 +217,9 @@ int mod_mgr_init(struct mod_mgr *mm, const char *mod_dir)
+ continue;
+ }
+ }
+- if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
++
++ /* Ignore fake directories and hidden files */
++ if (de->d_name[0] == '.')
+ continue;
+
+ mod = module_create(de->d_name, mod_dir);
diff --git a/patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch b/patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch
new file mode 100644
index 000000000..8ba7ee188
--- /dev/null
+++ b/patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch
@@ -0,0 +1,527 @@
+From: Michael Olbrich <m.olbrich@pengutronix.de>
+Date: Wed, 3 Jun 2015 11:40:12 +0200
+Subject: [PATCH] use hackbench from rt-tests
+
+Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
+---
+ modules/linux_perf/CMakeLists.txt | 6 -
+ modules/linux_perf/hackbench.c | 381 ------------------------------------
+ modules/linux_perf/perf_hackbench.c | 46 ++++-
+ 3 files changed, 37 insertions(+), 396 deletions(-)
+ delete mode 100644 modules/linux_perf/hackbench.c
+
+diff --git a/modules/linux_perf/CMakeLists.txt b/modules/linux_perf/CMakeLists.txt
+index f179527df315..8b50cd51a8e5 100644
+--- a/modules/linux_perf/CMakeLists.txt
++++ b/modules/linux_perf/CMakeLists.txt
+@@ -3,9 +3,3 @@ cbench_module(linux_perf
+ perf_hackbench.c
+ sched-pipe.c
+ )
+-
+-find_package(Threads)
+-add_executable(hackbench hackbench.c)
+-target_link_libraries(hackbench ${CMAKE_THREAD_LIBS_INIT})
+-
+-install(TARGETS hackbench DESTINATION lib/cbenchsuite/linux_perf)
+diff --git a/modules/linux_perf/hackbench.c b/modules/linux_perf/hackbench.c
+deleted file mode 100644
+index 1636999403cd..000000000000
+--- a/modules/linux_perf/hackbench.c
++++ /dev/null
+@@ -1,381 +0,0 @@
+-
+-/*
+- * This is the latest version of hackbench.c, that tests scheduler and
+- * unix-socket (or pipe) performance.
+- *
+- * Usage: hackbench [-pipe] <num groups> [process|thread] [loops]
+- *
+- * Build it with:
+- * gcc -g -Wall -O2 -o hackbench hackbench.c -lpthread
+- */
+-#if 0
+-
+-Date: Fri, 04 Jan 2008 14:06:26 +0800
+-From: "Zhang, Yanmin" <yanmin_zhang@linux.intel.com>
+-To: LKML <linux-kernel@vger.kernel.org>
+-Subject: Improve hackbench
+-Cc: Ingo Molnar <mingo@elte.hu>, Arjan van de Ven <arjan@infradead.org>
+-
+-hackbench tests the Linux scheduler. The original program is at
+-http://devresources.linux-foundation.org/craiger/hackbench/src/hackbench.c
+-Based on this multi-process version, a nice person created a multi-thread
+-version. Pls. see
+-http://www.bullopensource.org/posix/pi-futex/hackbench_pth.c
+-
+-When I integrated them into my automation testing system, I found
+-a couple of issues and did some improvements.
+-
+-1) Merge hackbench: I integrated hackbench_pth.c into hackbench and added a
+-new parameter which can be used to choose process mode or thread mode. The
+-default mode is process.
+-
+-2) It runs too fast and ends in a couple of seconds. Sometimes its too hard to debug
+-the issues. On my ia64 Montecito machines, the result looks weird when comparing
+-process mode and thread mode.
+-I want a stable result and hope the testing could run for a stable longer time, so I
+-might use performance tools to debug issues.
+-I added another new parameter,`loops`, which can be used to change variable loops,
+-so more messages will be passed from writers to receivers. Parameter 'loops' is equal to
+-100 by default.
+-
+-For example on my 8-core x86_64:
+-[ymzhang@lkp-st01-x8664 hackbench]$ uname -a
+-Linux lkp-st01-x8664 2.6.24-rc6 #1 SMP Fri Dec 21 08:32:31 CST 2007 x86_64 x86_64 x86_64 GNU/Linux
+-[ymzhang@lkp-st01-x8664 hackbench]$ ./hackbench
+-Usage: hackbench [-pipe] <num groups> [process|thread] [loops]
+-[ymzhang@lkp-st01-x8664 hackbench]$ ./hackbench 150 process 1000
+-Time: 151.533
+-[ymzhang@lkp-st01-x8664 hackbench]$ ./hackbench 150 thread 1000
+-Time: 153.666
+-
+-
+-With the same new parameters, I did captured the SLUB issue discussed on LKML recently.
+-
+-3) hackbench_pth.c will fail on ia64 machine because pthread_attr_setstacksize always
+-fails if the stack size is less than 196*1024. I moved this statement within a __ia64__ check.
+-
+-
+-This new program could be compiled with command line:
+-#gcc -g -Wall -o hackbench hackbench.c -lpthread
+-
+-
+-Thank Ingo for his great comments!
+-
+--yanmin
+-
+----
+-
+-* Nathan Lynch <ntl@pobox.com> wrote:
+-
+-> Here is a fixlet for the hackbench program found at
+->
+-> http://people.redhat.com/mingo/cfs-scheduler/tools/hackbench.c
+->
+-> When redirecting hackbench output I am seeing multiple copies of the
+-> "Running with %d*40 (== %d) tasks" line. Need to flush the buffered
+-> output before forking.
+-
+-#endif
+-
+-/* Test groups of 20 processes spraying to 20 receivers */
+-#include <pthread.h>
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <errno.h>
+-#include <unistd.h>
+-#include <sys/types.h>
+-#include <sys/socket.h>
+-#include <sys/wait.h>
+-#include <sys/time.h>
+-#include <sys/poll.h>
+-#include <limits.h>
+-
+-#define DATASIZE 100
+-static unsigned int loops = 100;
+-/*
+- * 0 means thread mode and others mean process (default)
+- */
+-static unsigned int process_mode = 1;
+-
+-static int use_pipes = 0;
+-
+-struct sender_context {
+- unsigned int num_fds;
+- int ready_out;
+- int wakefd;
+- int out_fds[0];
+-};
+-
+-struct receiver_context {
+- unsigned int num_packets;
+- int in_fds[2];
+- int ready_out;
+- int wakefd;
+-};
+-
+-
+-static void barf(const char *msg)
+-{
+- fprintf(stderr, "%s (error: %s)\n", msg, strerror(errno));
+- exit(1);
+-}
+-
+-static void print_usage_exit()
+-{
+- printf("Usage: hackbench [-pipe] <num groups> [process|thread] [loops]\n");
+- exit(1);
+-}
+-
+-static void fdpair(int fds[2])
+-{
+- if (use_pipes) {
+- if (pipe(fds) == 0)
+- return;
+- } else {
+- if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) == 0)
+- return;
+- }
+- barf("Creating fdpair");
+-}
+-
+-/* Block until we're ready to go */
+-static void ready(int ready_out, int wakefd)
+-{
+- char dummy;
+- struct pollfd pollfd = { .fd = wakefd, .events = POLLIN };
+-
+- /* Tell them we're ready. */
+- if (write(ready_out, &dummy, 1) != 1)
+- barf("CLIENT: ready write");
+-
+- /* Wait for "GO" signal */
+- if (poll(&pollfd, 1, -1) != 1)
+- barf("poll");
+-}
+-
+-/* Sender sprays loops messages down each file descriptor */
+-static void *sender(struct sender_context *ctx)
+-{
+- char data[DATASIZE];
+- unsigned int i, j;
+-
+- ready(ctx->ready_out, ctx->wakefd);
+-
+- /* Now pump to every receiver. */
+- for (i = 0; i < loops; i++) {
+- for (j = 0; j < ctx->num_fds; j++) {
+- int ret, done = 0;
+-
+-again:
+- ret = write(ctx->out_fds[j], data + done, sizeof(data)-done);
+- if (ret < 0)
+- barf("SENDER: write");
+- done += ret;
+- if (done < sizeof(data))
+- goto again;
+- }
+- }
+-
+- return NULL;
+-}
+-
+-
+-/* One receiver per fd */
+-static void *receiver(struct receiver_context* ctx)
+-{
+- unsigned int i;
+-
+- if (process_mode)
+- close(ctx->in_fds[1]);
+-
+- /* Wait for start... */
+- ready(ctx->ready_out, ctx->wakefd);
+-
+- /* Receive them all */
+- for (i = 0; i < ctx->num_packets; i++) {
+- char data[DATASIZE];
+- int ret, done = 0;
+-
+-again:
+- ret = read(ctx->in_fds[0], data + done, DATASIZE - done);
+- if (ret < 0)
+- barf("SERVER: read");
+- done += ret;
+- if (done < DATASIZE)
+- goto again;
+- }
+-
+- return NULL;
+-}
+-
+-pthread_t create_worker(void *ctx, void *(*func)(void *))
+-{
+- pthread_attr_t attr;
+- pthread_t childid;
+- int err;
+-
+- if (process_mode) {
+- /* process mode */
+- /* Fork the receiver. */
+- switch (fork()) {
+- case -1: barf("fork()");
+- case 0:
+- (*func) (ctx);
+- exit(0);
+- }
+-
+- return (pthread_t) 0;
+- }
+-
+- if (pthread_attr_init(&attr) != 0)
+- barf("pthread_attr_init:");
+-
+-#ifndef __ia64__
+- if (pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN) != 0)
+- barf("pthread_attr_setstacksize");
+-#endif
+-
+- if ((err=pthread_create(&childid, &attr, func, ctx)) != 0) {
+- fprintf(stderr, "pthread_create failed: %s (%d)\n", strerror(err), err);
+- exit(-1);
+- }
+- return (childid);
+-}
+-
+-void reap_worker(pthread_t id)
+-{
+- int status;
+-
+- if (process_mode) {
+- /* process mode */
+- wait(&status);
+- if (!WIFEXITED(status))
+- exit(1);
+- } else {
+- void *status;
+-
+- pthread_join(id, &status);
+- }
+-}
+-
+-/* One group of senders and receivers */
+-static unsigned int group(pthread_t *pth,
+- unsigned int num_fds,
+- int ready_out,
+- int wakefd)
+-{
+- unsigned int i;
+- struct sender_context* snd_ctx = malloc (sizeof(struct sender_context)
+- +num_fds*sizeof(int));
+-
+- for (i = 0; i < num_fds; i++) {
+- int fds[2];
+- struct receiver_context* ctx = malloc (sizeof(*ctx));
+-
+- if (!ctx)
+- barf("malloc()");
+-
+-
+- /* Create the pipe between client and server */
+- fdpair(fds);
+-
+- ctx->num_packets = num_fds*loops;
+- ctx->in_fds[0] = fds[0];
+- ctx->in_fds[1] = fds[1];
+- ctx->ready_out = ready_out;
+- ctx->wakefd = wakefd;
+-
+- pth[i] = create_worker(ctx, (void *)(void *)receiver);
+-
+- snd_ctx->out_fds[i] = fds[1];
+- if (process_mode)
+- close(fds[0]);
+- }
+-
+- /* Now we have all the fds, fork the senders */
+- for (i = 0; i < num_fds; i++) {
+- snd_ctx->ready_out = ready_out;
+- snd_ctx->wakefd = wakefd;
+- snd_ctx->num_fds = num_fds;
+-
+- pth[num_fds+i] = create_worker(snd_ctx, (void *)(void *)sender);
+- }
+-
+- /* Close the fds we have left */
+- if (process_mode)
+- for (i = 0; i < num_fds; i++)
+- close(snd_ctx->out_fds[i]);
+-
+- /* Return number of children to reap */
+- return num_fds * 2;
+-}
+-
+-int main(int argc, char *argv[])
+-{
+- unsigned int i, num_groups = 10, total_children;
+- struct timeval start, stop, diff;
+- unsigned int num_fds = 20;
+- int readyfds[2], wakefds[2];
+- char dummy;
+- pthread_t *pth_tab;
+-
+- if (argv[1] && strcmp(argv[1], "-pipe") == 0) {
+- use_pipes = 1;
+- argc--;
+- argv++;
+- }
+-
+- if (argc >= 2 && (num_groups = atoi(argv[1])) == 0)
+- print_usage_exit();
+-
+- fflush(NULL);
+-
+- if (argc > 2) {
+- if ( !strcmp(argv[2], "process") )
+- process_mode = 1;
+- else if ( !strcmp(argv[2], "thread") )
+- process_mode = 0;
+- else
+- print_usage_exit();
+- }
+-
+- if (argc > 3)
+- loops = atoi(argv[3]);
+-
+- pth_tab = malloc(num_fds * 2 * num_groups * sizeof(pthread_t));
+-
+- if (!pth_tab)
+- barf("main:malloc()");
+-
+- fdpair(readyfds);
+- fdpair(wakefds);
+-
+- total_children = 0;
+- for (i = 0; i < num_groups; i++)
+- total_children += group(pth_tab+total_children, num_fds, readyfds[1], wakefds[0]);
+-
+- /* Wait for everyone to be ready */
+- for (i = 0; i < total_children; i++)
+- if (read(readyfds[0], &dummy, 1) != 1)
+- barf("Reading for readyfds");
+-
+- gettimeofday(&start, NULL);
+-
+- /* Kick them off */
+- if (write(wakefds[1], &dummy, 1) != 1)
+- barf("Writing to start them");
+-
+- /* Reap them all */
+- for (i = 0; i < total_children; i++)
+- reap_worker(pth_tab[i]);
+-
+- gettimeofday(&stop, NULL);
+-
+- /* Print time... */
+- timersub(&stop, &start, &diff);
+- printf("%lu.%03lu\n", diff.tv_sec, diff.tv_usec/1000);
+- exit(0);
+-}
+-
+-
+diff --git a/modules/linux_perf/perf_hackbench.c b/modules/linux_perf/perf_hackbench.c
+index e289694c518c..ddc489af34c3 100644
+--- a/modules/linux_perf/perf_hackbench.c
++++ b/modules/linux_perf/perf_hackbench.c
+@@ -7,16 +7,18 @@
+ #include <cbench/exec_helper.h>
+
+ struct header plugin_hackbench_defaults[] = {
+- OPTION_BOOL("pipe", NULL, NULL, 0),
++ OPTION_BOOL("pipe", "Use a pipe instead of Unix domain sockets", NULL, 0),
+ OPTION_BOOL("process", "Use processes instead of threads.", NULL, 0),
+ OPTION_INT32("groups", "Number of groups used.", NULL, 10),
+ OPTION_INT32("loops", "Number of loops executed.", NULL, 10000),
++ OPTION_INT32("size", "Number of bytes transfered in each message.", NULL, 100),
++ OPTION_INT32("fds", "Number of file descriptor pair opened.", NULL, 20),
+ OPTION_SENTINEL
+ };
+
+ static struct version plugin_hackbench_versions[] = {
+ {
+- .version = "0.1",
++ .version = "0.2",
+ .default_options = plugin_hackbench_defaults,
+ .nr_independent_values = 1,
+ }, {
+@@ -25,14 +27,20 @@ static struct version plugin_hackbench_versions[] = {
+ };
+
+ static char hackbench_pipe[] = "-pipe";
+-static char hackbench_process[] = "process";
+-static char hackbench_thread[] = "thread";
++static char hackbench_process[] = "--process";
++static char hackbench_thread[] = "--threads";
++static char hackbench_groups[] = "--groups";
++static char hackbench_loops[] = "--loops";
++static char hackbench_size[] = "--datasize";
++static char hackbench_fds[] = "--fds";
+
+ struct hackbench_data {
+ char *hb_bin;
+- char loops[32];
+ char groups[32];
+- char *args[6];
++ char loops[32];
++ char size[32];
++ char fds[32];
++ char *args[12];
+
+ char *result;
+ };
+@@ -48,13 +56,12 @@ static int hackbench_install(struct plugin *plug)
+ if (!d)
+ return -1;
+
+- hb_bin = malloc(strlen(bin_path) + 24);
++ hb_bin = strdup("/usr/bin/hackbench");
+ if (!hb_bin) {
+ free(d);
+ return -1;
+ }
+
+- sprintf(hb_bin, "%s/hackbench", bin_path);
+ d->hb_bin = hb_bin;
+ d->args[0] = hb_bin;
+
+@@ -63,6 +70,8 @@ static int hackbench_install(struct plugin *plug)
+ ++argi;
+ }
+
++ d->args[argi] = hackbench_groups;
++ ++argi;
+ sprintf(d->groups, "%d", option_get_int32(opts, "groups"));
+ d->args[argi] = d->groups;
+ ++argi;
+@@ -73,10 +82,24 @@ static int hackbench_install(struct plugin *plug)
+ d->args[argi] = hackbench_thread;
+ ++argi;
+
++ d->args[argi] = hackbench_loops;
++ ++argi;
+ sprintf(d->loops, "%d", option_get_int32(opts, "loops"));
+ d->args[argi] = d->loops;
+ ++argi;
+
++ d->args[argi] = hackbench_size;
++ ++argi;
++ sprintf(d->size, "%d", option_get_int32(opts, "size"));
++ d->args[argi] = d->size;
++ ++argi;
++
++ d->args[argi] = hackbench_fds;
++ ++argi;
++ sprintf(d->fds, "%d", option_get_int32(opts, "fds"));
++ d->args[argi] = d->fds;
++ ++argi;
++
+ d->args[argi] = NULL;
+
+ plugin_set_data(plug, d);
+@@ -107,8 +130,13 @@ static int hackbench_parse_results(struct plugin *plug)
+ struct hackbench_data *d = plugin_get_data(plug);
+ struct data *data = data_alloc(DATA_TYPE_RESULT, 1);
+ double res;
++ char *c;
++
++ c = strrchr(d->result, ':');
++ if (!c)
++ return -1;
+
+- res = atof(d->result);
++ res = atof(c+2);
+ data_add_double(data, res);
+
+ plugin_add_results(plug, data);
diff --git a/patches/cbenchsuite-1.0/series b/patches/cbenchsuite-1.0/series
new file mode 100644
index 000000000..68c3cc79c
--- /dev/null
+++ b/patches/cbenchsuite-1.0/series
@@ -0,0 +1,6 @@
+# generated by git-ptx-patches
+#tag:base --start-number 1
+0001-module_manager-Fix-directory-detection.patch
+0002-module_manager-Ignore-hidden-directories-as-well.patch
+0003-use-hackbench-from-rt-tests.patch
+# 5e6d0b189d0e0b76a94ff73e0956c76b - git-ptx-patches magic
diff --git a/rules/cbenchsuite.in b/rules/cbenchsuite.in
new file mode 100644
index 000000000..9778c2625
--- /dev/null
+++ b/rules/cbenchsuite.in
@@ -0,0 +1,14 @@
+## SECTION=test_suites
+
+config CBENCHSUITE
+ tristate
+ select HOST_CMAKE
+ select LIBC_PTHREAD
+ select LIBC_DL
+ select LIBC_M
+ select LIBUUID
+ select SQLITE
+ prompt "cbenchsuite"
+ help
+ cbenchsuite is a benchmark suite including plotter for high accuracy
+ measurements. See http://cbenchsuite.org
diff --git a/rules/cbenchsuite.make b/rules/cbenchsuite.make
new file mode 100644
index 000000000..8d38a5f2d
--- /dev/null
+++ b/rules/cbenchsuite.make
@@ -0,0 +1,67 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2015 by Markus Pargmann <mpa@pengutronix.de
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_CBENCHSUITE) += cbenchsuite
+
+#
+# Paths and names
+#
+CBENCHSUITE_VERSION := 1.0
+CBENCHSUITE_MD5 := d5bddd48495edf7200d11fce03a310ef
+CBENCHSUITE := cbenchsuite-$(CBENCHSUITE_VERSION)
+CBENCHSUITE_SUFFIX := tar.gz
+CBENCHSUITE_URL := https://github.com/scosu/cbenchsuite/archive/v$(CBENCHSUITE_VERSION).$(CBENCHSUITE_SUFFIX)
+CBENCHSUITE_SOURCE := $(SRCDIR)/$(CBENCHSUITE).$(CBENCHSUITE_SUFFIX)
+CBENCHSUITE_DIR := $(BUILDDIR)/$(CBENCHSUITE)
+CBENCHSUITE_LICENSE := GPL
+
+#
+# autoconf
+#
+CBENCHSUITE_CONF_TOOL := cmake
+CBENCHSUITE_CONF_OPT = \
+ $(CROSS_CMAKE_USR) \
+ -DBUILD_TESTS:BOOL=OFF \
+ -DMODULE_COMPRESSION:BOOL=ON \
+ -DMODULE_COOLDOWN:BOOL=ON \
+ -DMODULE_CPUSCHED:BOOL=ON \
+ -DMODULE_KERNEL:BOOL=ON \
+ -DMODULE_LINUX_PERF:BOOL=ON \
+ -DMODULE_MATH:BOOL=ON \
+ -DMODULE_SYSCTL:BOOL=ON \
+ -DDB_DIR:STRING=/run/cbenchsuite/db/ \
+ -DWORK_DIR:STRING=/run/cbenchsuite/work/ \
+ -DDOWNLOAD_DIR:STRING=/run/cbenchsuite/downloads/
+
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/cbenchsuite.targetinstall:
+ @$(call targetinfo)
+
+ @$(call install_init, cbenchsuite)
+ @$(call install_fixup, cbenchsuite,PRIORITY,optional)
+ @$(call install_fixup, cbenchsuite,SECTION,base)
+ @$(call install_fixup, cbenchsuite,AUTHOR,"Markus Pargmann <mpa@pengutronix.de>")
+ @$(call install_fixup, cbenchsuite,DESCRIPTION,missing)
+
+ @$(call install_copy, cbenchsuite, 0, 0, 0755, -, /usr/bin/cbenchsuite)
+ @$(call install_tree, cbenchsuite, 0, 0, -, /usr/lib/cbenchsuite)
+
+ @$(call install_finish, cbenchsuite)
+
+ @$(call touch)
+
+# vim: syntax=make