Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/3711/?format=api
https://patches.dpdk.org/api/patches/3711/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/1424872326-17930-2-git-send-email-adrien.mazarguil@6wind.com/", "project": { "id": 1, "url": "https://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<1424872326-17930-2-git-send-email-adrien.mazarguil@6wind.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1424872326-17930-2-git-send-email-adrien.mazarguil@6wind.com", "date": "2015-02-25T13:52:04", "name": "[dpdk-dev,v3,1/3] scripts: check features to generate configuration header", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "3386ab8cb50aebd8f34fca44851d092264d631ee", "submitter": { "id": 165, "url": "https://patches.dpdk.org/api/people/165/?format=api", "name": "Adrien Mazarguil", "email": "adrien.mazarguil@6wind.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dpdk/patch/1424872326-17930-2-git-send-email-adrien.mazarguil@6wind.com/mbox/", "series": [], "comments": "https://patches.dpdk.org/api/patches/3711/comments/", "check": "pending", "checks": "https://patches.dpdk.org/api/patches/3711/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 59AEC9A9D;\n\tWed, 25 Feb 2015 14:52:26 +0100 (CET)", "from mail-wi0-f175.google.com (mail-wi0-f175.google.com\n\t[209.85.212.175]) by dpdk.org (Postfix) with ESMTP id D9CED9A94\n\tfor <dev@dpdk.org>; Wed, 25 Feb 2015 14:52:23 +0100 (CET)", "by mail-wi0-f175.google.com with SMTP id r20so33563998wiv.2\n\tfor <dev@dpdk.org>; Wed, 25 Feb 2015 05:52:23 -0800 (PST)", "from 6wind.com (6wind.net2.nerim.net. [213.41.180.237])\n\tby mx.google.com with ESMTPSA id\n\tch6sm64928386wjc.3.2015.02.25.05.52.22\n\tfor <dev@dpdk.org> (version=TLSv1.2 cipher=RC4-SHA bits=128/128);\n\tWed, 25 Feb 2015 05:52:23 -0800 (PST)" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=nQ8JaP+ZcETY1/uFlKLSOwbc99S+thXBSEtg1o1kqbQ=;\n\tb=JFsHFdLvF2TPorpZMZYuHdDOmIwVIJcW72D2uAZ6aqwFE26qHUCIQbaF44AiXbwwia\n\tNzqpMWxIQKgJ4B1e5gqouBONMaDmiCpmm2RKCFvOEBHT3ZGEsNA6FCgMJvJafdctgoDj\n\tV/vbT7wlckpffUsGogDDzv7loNGMavZddpKeRnUkLIYgiCHL7lbgOFdo1Vlk7ddaGvOV\n\tNxJF6c1Y5VB8qW+VUQBLkjQ8PtaYR4iTgJ+Xq2j0cp6bAvfVts8tp0ev3gY39N/Df3SA\n\tjispDrOb7mcJOfwMMudAzXTvK742sYZ3v4wWmJoltadgjUAqx+lNc/hL49maXHXdhLTH\n\thfzA==", "X-Gm-Message-State": "ALoCoQm3FGceYAcJXPHnANU6V9QiNebnlXYQrUq+5S+7bVf5r5ZWJgqjLzX/97BYBUhDYyZv+QUO", "X-Received": "by 10.180.97.226 with SMTP id ed2mr39530298wib.4.1424872343694; \n\tWed, 25 Feb 2015 05:52:23 -0800 (PST)", "From": "Adrien Mazarguil <adrien.mazarguil@6wind.com>", "To": "dev@dpdk.org", "Date": "Wed, 25 Feb 2015 14:52:04 +0100", "Message-Id": "<1424872326-17930-2-git-send-email-adrien.mazarguil@6wind.com>", "X-Mailer": "git-send-email 2.1.0", "In-Reply-To": "<1424872326-17930-1-git-send-email-adrien.mazarguil@6wind.com>", "References": "<1424492174-27072-1-git-send-email-adrien.mazarguil@6wind.com>\n\t<1424872326-17930-1-git-send-email-adrien.mazarguil@6wind.com>", "Subject": "[dpdk-dev] [PATCH v3 1/3] scripts: check features to generate\n\tconfiguration header", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "patches and discussions about DPDK <dev.dpdk.org>", "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://dpdk.org/ml/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "This script looks for types, macros and functions in header files using\ncompilation options found in the environment (CC, CFLAGS, CPPFLAGS) to\ndefine feature macros in a generated header.\n\nUseful in combination with external headers that do not provide such macros.\n\nSigned-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>\n---\n MAINTAINERS | 1 +\n scripts/auto-config-h.sh | 136 +++++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 137 insertions(+)\n create mode 100755 scripts/auto-config-h.sh", "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nindex 349ad2b..631e8ea 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -45,6 +45,7 @@ F: Makefile\n F: config/\n F: mk/\n F: pkg/\n+F: scripts/auto-config-h.sh\n F: scripts/depdirs-rule.sh\n F: scripts/gen-build-mk.sh\n F: scripts/gen-config-h.sh\ndiff --git a/scripts/auto-config-h.sh b/scripts/auto-config-h.sh\nnew file mode 100755\nindex 0000000..4356d7e\n--- /dev/null\n+++ b/scripts/auto-config-h.sh\n@@ -0,0 +1,136 @@\n+#!/bin/sh\n+#\n+# BSD LICENSE\n+#\n+# Copyright 2014-2015 6WIND S.A.\n+#\n+# Redistribution and use in source and binary forms, with or without\n+# modification, are permitted provided that the following conditions\n+# are met:\n+#\n+# * Redistributions of source code must retain the above copyright\n+# notice, this list of conditions and the following disclaimer.\n+# * Redistributions in binary form must reproduce the above copyright\n+# notice, this list of conditions and the following disclaimer in\n+# the documentation and/or other materials provided with the\n+# distribution.\n+# * Neither the name of 6WIND S.A. nor the names of its\n+# contributors may be used to endorse or promote products derived\n+# from this software without specific prior written permission.\n+#\n+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+# \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+#\n+# Crude script to detect whether particular types, macros and functions are\n+# defined by trying to compile a file with a given header. Can be used to\n+# perform cross-platform checks since the resulting object file is not\n+# executed.\n+#\n+# Set VERBOSE=1 in the environment to display compiler output and errors.\n+#\n+# CC, CPPFLAGS, CFLAGS, EXTRA_CPPFLAGS and EXTRA_CFLAGS are taken from the\n+# environment.\n+#\n+# AUTO_CONFIG_CFLAGS may append additional CFLAGS without modifying the\n+# above variables.\n+\n+file=${1:?output file name required (config.h)}\n+macro=${2:?output macro name required (HAVE_*)}\n+include=${3:?include name required (foo.h)}\n+type=${4:?object type required (define, enum, type, field, func)}\n+name=${5:?define/type/function name required}\n+\n+: ${CC:=cc}\n+\n+temp=/tmp/${0##*/}.$$.c\n+\n+case $type in\n+define)\n+\tcode=\"\\\n+#ifndef $name\n+#error $name not defined\n+#endif\n+\"\n+\t;;\n+enum)\n+\tcode=\"\\\n+long test____ = $name;\n+\"\n+\t;;\n+type)\n+\tcode=\"\\\n+$name test____;\n+\"\n+\t;;\n+field)\n+\tcode=\"\\\n+void test____(void)\n+{\n+\t${name%%.*} test_____;\n+\n+\t(void)test_____.${name#*.};\n+}\n+\"\n+\t;;\n+func)\n+\tcode=\"\\\n+void (*test____)() = (void (*)())$name;\n+\"\n+\t;;\n+*)\n+\tunset error\n+\t: ${error:?unknown object type \\\"$type\\\"}\n+\texit\n+esac\n+\n+if [ \"${VERBOSE}\" = 1 ]\n+then\n+\terr=2\n+\tout=1\n+\teol='\n+'\n+else\n+\texec 3> /dev/null ||\n+\texit\n+\terr=3\n+\tout=3\n+\teol=' '\n+fi &&\n+printf 'Looking for %s %s in %s.%s' \\\n+\t\"${name}\" \"${type}\" \"${include}\" \"${eol}\" &&\n+printf \"\\\n+#include <%s>\n+\n+%s\n+\" \"$include\" \"$code\" > \"${temp}\" &&\n+if ${CC} ${CPPFLAGS} ${EXTRA_CPPFLAGS} ${CFLAGS} ${EXTRA_CFLAGS} \\\n+\t${AUTO_CONFIG_CFLAGS} \\\n+\t-c -o /dev/null \"${temp}\" 1>&${out} 2>&${err}\n+then\n+\trm -f \"${temp}\"\n+\tprintf \"\\\n+#ifndef %s\n+#define %s 1\n+#endif /* %s */\n+\n+\" \"${macro}\" \"${macro}\" \"${macro}\" >> \"${file}\" &&\n+\tprintf 'Defining %s.\\n' \"${macro}\"\n+else\n+\trm -f \"${temp}\"\n+\tprintf \"\\\n+/* %s is not defined. */\n+\n+\" \"${macro}\" >> \"${file}\" &&\n+\tprintf 'Not defining %s.\\n' \"${macro}\"\n+fi\n+\n+exit\n", "prefixes": [ "dpdk-dev", "v3", "1/3" ] }{ "id": 3711, "url": "