All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jin Yao <yao.jin@linux.intel.com>
To: acme@kernel.org, jolsa@kernel.org, peterz@infradead.org,
	mingo@redhat.com, alexander.shishkin@linux.intel.com
Cc: Linux-kernel@vger.kernel.org, ak@linux.intel.com,
	kan.liang@intel.com, yao.jin@intel.com
Subject: [PATCH v4 1/6] tools include: Add config.h header file
Date: Fri, 30 Mar 2018 17:27:11 +0800	[thread overview]
Message-ID: <1522402036-22915-2-git-send-email-yao.jin@linux.intel.com> (raw)
In-Reply-To: <1522402036-22915-1-git-send-email-yao.jin@linux.intel.com>

From: Jiri Olsa <jolsa@kernel.org>

Adding IS_BUILTIN macro and its dependencies into
tools world.

It's taken from kernel's include/linux/kconfig.h,
which can't be taken completely due to its kconfig
dependencies.

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
 tools/include/tools/config.h | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 tools/include/tools/config.h

diff --git a/tools/include/tools/config.h b/tools/include/tools/config.h
new file mode 100644
index 0000000..08ade7d
--- /dev/null
+++ b/tools/include/tools/config.h
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _TOOLS_CONFIG_H
+#define _TOOLS_CONFIG_H
+
+/* Subset of include/linux/kconfig.h */
+
+#define __ARG_PLACEHOLDER_1 0,
+#define __take_second_arg(__ignored, val, ...) val
+
+/*
+ * Helper macros to use CONFIG_ options in C/CPP expressions. Note that
+ * these only work with boolean and tristate options.
+ */
+
+/*
+ * Getting something that works in C and CPP for an arg that may or may
+ * not be defined is tricky.  Here, if we have "#define CONFIG_BOOGER 1"
+ * we match on the placeholder define, insert the "0," for arg1 and generate
+ * the triplet (0, 1, 0).  Then the last step cherry picks the 2nd arg (a one).
+ * When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when
+ * the last step cherry picks the 2nd arg, we get a zero.
+ */
+#define __is_defined(x)			___is_defined(x)
+#define ___is_defined(val)		____is_defined(__ARG_PLACEHOLDER_##val)
+#define ____is_defined(arg1_or_junk)	__take_second_arg(arg1_or_junk 1, 0)
+
+/*
+ * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
+ * otherwise. For boolean options, this is equivalent to
+ * IS_ENABLED(CONFIG_FOO).
+ */
+#define IS_BUILTIN(option) __is_defined(option)
+
+#endif /* _TOOLS_CONFIG_H */
-- 
2.7.4

  reply	other threads:[~2018-03-30  1:33 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-30  9:27 [PATCH v4 0/6] Support perf -vv Jin Yao
2018-03-30  9:27 ` Jin Yao [this message]
2018-04-04  5:30   ` [tip:perf/urgent] tools include: Add config.h header file tip-bot for Jiri Olsa
2018-03-30  9:27 ` [PATCH v4 3/6] perf config: Rename to HAVE_DWARF_GETLOCATIONS_SUPPORT Jin Yao
2018-04-04  5:31   ` [tip:perf/urgent] " tip-bot for Jin Yao
2018-03-30  9:27 ` [PATCH v4 4/6] perf version: Print the compiled-in status of libraries Jin Yao
2018-04-02 16:47   ` Arnaldo Carvalho de Melo
2018-04-03  1:24     ` Jin, Yao
2018-04-04  5:31   ` [tip:perf/urgent] " tip-bot for Jin Yao
2018-03-30  9:27 ` [PATCH v4 5/6] perf: Support perf -vv Jin Yao
2018-04-04  5:32   ` [tip:perf/urgent] perf tools: Add 'perf -vv' as an alias to 'perf version --build-options' tip-bot for Jin Yao
2018-03-30  9:27 ` [PATCH v4 6/6] perf Documentation: Create perf-version.txt Jin Yao
2018-04-04  5:32   ` [tip:perf/urgent] perf version: Add man page tip-bot for Jin Yao
2018-03-30  9:34 ` [PATCH v4 0/6] Support perf -vv Jiri Olsa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1522402036-22915-2-git-send-email-yao.jin@linux.intel.com \
    --to=yao.jin@linux.intel.com \
    --cc=Linux-kernel@vger.kernel.org \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=jolsa@kernel.org \
    --cc=kan.liang@intel.com \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=yao.jin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.