diff options
-rw-r--r-- | patches/cbenchsuite-1.0/0001-module_manager-Fix-directory-detection.patch | 55 | ||||
-rw-r--r-- | patches/cbenchsuite-1.0/0002-module_manager-Ignore-hidden-directories-as-well.patch | 24 | ||||
-rw-r--r-- | patches/cbenchsuite-1.0/0003-use-hackbench-from-rt-tests.patch | 527 | ||||
-rw-r--r-- | patches/cbenchsuite-1.0/series | 6 | ||||
-rw-r--r-- | rules/cbenchsuite.in | 14 | ||||
-rw-r--r-- | rules/cbenchsuite.make | 67 |
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 |