get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/4002/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 4002,
    "url": "http://patches.dpdk.org/api/patches/4002/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1426194348-4406-2-git-send-email-syuu@cloudius-systems.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<1426194348-4406-2-git-send-email-syuu@cloudius-systems.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1426194348-4406-2-git-send-email-syuu@cloudius-systems.com",
    "date": "2015-03-12T21:05:42",
    "name": "[dpdk-dev,RFC,1/7] mk: support compiling C++ code",
    "commit_ref": null,
    "pull_url": null,
    "state": "rfc",
    "archived": true,
    "hash": "33b3456c1ac3b81cb835e419ad3000c3c6b31c3d",
    "submitter": {
        "id": 178,
        "url": "http://patches.dpdk.org/api/people/178/?format=api",
        "name": "Takuya ASADA",
        "email": "syuu@cloudius-systems.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1426194348-4406-2-git-send-email-syuu@cloudius-systems.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/4002/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/4002/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 0A4815A5D;\n\tThu, 12 Mar 2015 22:05:59 +0100 (CET)",
            "from mail-pd0-f173.google.com (mail-pd0-f173.google.com\n\t[209.85.192.173]) by dpdk.org (Postfix) with ESMTP id 367E35A08\n\tfor <dev@dpdk.org>; Thu, 12 Mar 2015 22:05:57 +0100 (CET)",
            "by pdjy10 with SMTP id y10so22991330pdj.8\n\tfor <dev@dpdk.org>; Thu, 12 Mar 2015 14:05:56 -0700 (PDT)",
            "from localhost (7c295ef2.i-revonet.jp. [124.41.94.242])\n\tby mx.google.com with ESMTPSA id c8sm25354pds.5.2015.03.12.14.05.55\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 12 Mar 2015 14:05:55 -0700 (PDT)"
        ],
        "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:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=2e45c8e6ExODnZ9bYP4en90YK/J68Q92orRUzMHXFvI=;\n\tb=gVQ/yfhJdb7w3cnE2ZeZuc6xwOjKJypnw/l4EcWHo/s2qbwzXZXk5VvskkVU5Pk3JJ\n\t+2izPqDD0qSPVTVrN9WyNxDuYJlzOYD6HP/pl46X3Q/MysneGJH6sNDZmWcY6CWr1P8f\n\tMK9T++SaMhKCFTv0u4+9g6UTP0QN9hyvysLbiJn100MiZgczRmiD5aQG71eU2JNUtSKD\n\tsIJTtiRIMnqgeQgY3fxfv8riuXFuwxMQXfyw+JxvxAcTGgBI8urcF5Dt13Bk+xrUwasc\n\tFyfj2MMxjcXpnRZABrVuQ2C3BDKbaHkAibKZ5RMN+XX40Vl6GAonc06Ph5kAKG0BiSzR\n\tOu9g==",
        "X-Gm-Message-State": "ALoCoQnU939G90dFhzFJTg+E+PoDWQwxjbFQKmZtEJXnRNr+Kp5pNnw1WO+b/D3j616li/0oSYVk",
        "X-Received": "by 10.70.130.37 with SMTP id ob5mr48820029pdb.54.1426194356391; \n\tThu, 12 Mar 2015 14:05:56 -0700 (PDT)",
        "From": "Takuya ASADA <syuu@cloudius-systems.com>",
        "To": "dev@dpdk.org",
        "Date": "Fri, 13 Mar 2015 06:05:42 +0900",
        "Message-Id": "<1426194348-4406-2-git-send-email-syuu@cloudius-systems.com>",
        "X-Mailer": "git-send-email 2.1.0",
        "In-Reply-To": "<1426194348-4406-1-git-send-email-syuu@cloudius-systems.com>",
        "References": "<1426194348-4406-1-git-send-email-syuu@cloudius-systems.com>",
        "Subject": "[dpdk-dev] [RFC PATCH 1/7] mk: support compiling C++ code",
        "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": "Since OSv is written in C++, we need to write OSv EAL in C++.\nTo do so, we need to compile .cc files by $(CXX).\n\nThis patch does not contain diff for clang and icc, but OSv EAL does not supported these toolchain, this is enough for now.\n\nSigned-off-by: Takuya ASADA <syuu@cloudius-systems.com>\n---\n mk/internal/rte.compile-pre.mk | 41 ++++++++++++++++++++++++++++++++++++++---\n mk/target/generic/rte.vars.mk  |  4 ++++\n mk/toolchain/gcc/rte.vars.mk   |  5 ++++-\n 3 files changed, 46 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/mk/internal/rte.compile-pre.mk b/mk/internal/rte.compile-pre.mk\nindex b9bff4a..142f996 100644\n--- a/mk/internal/rte.compile-pre.mk\n+++ b/mk/internal/rte.compile-pre.mk\n@@ -37,7 +37,7 @@ SRCS-all := $(SRCS-y) $(SRCS-n) $(SRCS-)\n \n # convert source to obj file\n src2obj = $(strip $(patsubst %.c,%.o,\\\n-\t$(patsubst %.S,%_s.o,$(1))))\n+\t$(patsubst %.S,%_s.o,$(patsubst %.cc,%.o,$(1)))))\n \n # add a dot in front of the file name\n dotfile = $(strip $(foreach f,$(1),\\\n@@ -46,12 +46,12 @@ dotfile = $(strip $(foreach f,$(1),\\\n # convert source/obj files into dot-dep filename (does not\n # include .S files)\n src2dep = $(strip $(call dotfile,$(patsubst %.c,%.o.d, \\\n-\t\t$(patsubst %.S,,$(1)))))\n+\t\t$(patsubst %.S,,$(patsubst %.cc,%.o.d,$(1))))))\n obj2dep = $(strip $(call dotfile,$(patsubst %.o,%.o.d,$(1))))\n \n # convert source/obj files into dot-cmd filename\n src2cmd = $(strip $(call dotfile,$(patsubst %.c,%.o.cmd, \\\n-\t\t$(patsubst %.S,%_s.o.cmd,$(1)))))\n+\t\t$(patsubst %.S,%_s.o.cmd,$(patsubst %.cc,%.o.cmd,$(1))))))\n obj2cmd = $(strip $(call dotfile,$(patsubst %.o,%.o.cmd,$(1))))\n \n OBJS-y := $(call src2obj,$(SRCS-y))\n@@ -78,11 +78,19 @@ C_TO_O = $(HOSTCC) -Wp,-MD,$(call obj2dep,$(@)).tmp $(HOST_CFLAGS) \\\n \t$(CFLAGS_$(@)) $(HOST_EXTRA_CFLAGS) -o $@ -c $<\n C_TO_O_STR = $(subst ','\\'',$(C_TO_O)) #'# fix syntax highlight\n C_TO_O_DISP = $(if $(V),\"$(C_TO_O_STR)\",\"  HOSTCC $(@)\")\n+CXX_TO_O = $(HOSTCXX) -Wp,-MD,$(call obj2dep,$(@)).tmp $(HOST_CXXFLAGS) \\\n+\t$(CXXFLAGS_$(@)) $(HOST_EXTRA_CXXFLAGS) -o $@ -c $<\n+CXX_TO_O_STR = $(subst ','\\'',$(CXX_TO_O)) #'# fix syntax highlight\n+CXX_TO_O_DISP = $(if $(V),\"$(CXX_TO_O_STR)\",\"  HOSTCXX $(@)\")\n else\n C_TO_O = $(CC) -Wp,-MD,$(call obj2dep,$(@)).tmp $(CFLAGS) \\\n \t$(CFLAGS_$(@)) $(EXTRA_CFLAGS) -o $@ -c $<\n C_TO_O_STR = $(subst ','\\'',$(C_TO_O)) #'# fix syntax highlight\n C_TO_O_DISP = $(if $(V),\"$(C_TO_O_STR)\",\"  CC $(@)\")\n+CXX_TO_O = $(CXX) -Wp,-MD,$(call obj2dep,$(@)).tmp $(CXXFLAGS) \\\n+\t$(CXXFLAGS_$(@)) $(EXTRA_CXXFLAGS) -o $@ -c $<\n+CXX_TO_O_STR = $(subst ','\\'',$(CXX_TO_O)) #'# fix syntax highlight\n+CXX_TO_O_DISP = $(if $(V),\"$(CXX_TO_O_STR)\",\"  CXX $(@)\")\n endif\n C_TO_O_CMD = 'cmd_$@ = $(C_TO_O_STR)'\n C_TO_O_DO = @set -e; \\\n@@ -91,6 +99,13 @@ C_TO_O_DO = @set -e; \\\n \techo $(C_TO_O_CMD) > $(call obj2cmd,$(@)) && \\\n \tsed 's,'$@':,dep_'$@' =,' $(call obj2dep,$(@)).tmp > $(call obj2dep,$(@)) && \\\n \trm -f $(call obj2dep,$(@)).tmp\n+CXX_TO_O_CMD = 'cmd_$@ = $(CXX_TO_O_STR)'\n+CXX_TO_O_DO = @set -e; \\\n+\techo $(CXX_TO_O_DISP); \\\n+\t$(CXX_TO_O) && \\\n+\techo $(CXX_TO_O_CMD) > $(call obj2cmd,$(@)) && \\\n+\tsed 's,'$@':,dep_'$@' =,' $(call obj2dep,$(@)).tmp > $(call obj2dep,$(@)) && \\\n+\trm -f $(call obj2dep,$(@)).tmp\n \n # return an empty string if string are equal\n compare = $(strip $(subst $(1),,$(2)) $(subst $(2),,$(1)))\n@@ -136,6 +151,26 @@ boolean = $(if $1,1,0)\n \t\t$(depfile_missing),\\\n \t\t$(depfile_newer)),\\\n \t\t$(C_TO_O_DO))\n+#\n+# Compile .cc file if needed\n+# Note: dep_$$@ is from the .d file and DEP_$$@ can be specified by\n+# user (by default it is empty)\n+#\n+.SECONDEXPANSION:\n+%.o: %.cc $$(wildcard $$(dep_$$@)) $$(DEP_$$(@)) FORCE\n+\t@[ -d $(dir $@) ] || mkdir -p $(dir $@)\n+\t$(if $(D),\\\n+\t\t@echo -n \"$< -> $@ \" ; \\\n+\t\techo -n \"file_missing=$(call boolean,$(file_missing)) \" ; \\\n+\t\techo -n \"cmdline_changed=$(call boolean,$(call cmdline_changed,$(CXX_TO_O))) \" ; \\\n+\t\techo -n \"depfile_missing=$(call boolean,$(depfile_missing)) \" ; \\\n+\t\techo \"depfile_newer=$(call boolean,$(depfile_newer))\")\n+\t$(if $(or \\\n+\t\t$(file_missing),\\\n+\t\t$(call cmdline_changed,$(CXX_TO_O)),\\\n+\t\t$(depfile_missing),\\\n+\t\t$(depfile_newer)),\\\n+\t\t$(CXX_TO_O_DO))\n \n # command to assemble a .S file to generate an object\n ifeq ($(USE_HOST),1)\ndiff --git a/mk/target/generic/rte.vars.mk b/mk/target/generic/rte.vars.mk\nindex 53650c3..47d845b 100644\n--- a/mk/target/generic/rte.vars.mk\n+++ b/mk/target/generic/rte.vars.mk\n@@ -146,7 +146,11 @@ endif\n LDFLAGS += -L$(RTE_SDK_BIN)/lib\n endif\n \n+# copy CFLAGS to CXXFLAGS\n+CXXFLAGS := $(CFLAGS)\n+\n export CFLAGS\n export LDFLAGS\n+export CXXFLAGS\n \n endif\ndiff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk\nindex 88f235c..4bdf2eb 100644\n--- a/mk/toolchain/gcc/rte.vars.mk\n+++ b/mk/toolchain/gcc/rte.vars.mk\n@@ -39,6 +39,7 @@\n #\n \n CC        = $(CROSS)gcc\n+CXX       = $(CROSS)g++\n KERNELCC  = $(CROSS)gcc\n CPP       = $(CROSS)cpp\n # for now, we don't use as but nasm.\n@@ -54,8 +55,10 @@ GCOV      = $(CROSS)gcov\n \n ifeq (\"$(origin CC)\", \"command line\")\n HOSTCC    = $(CC)\n+HOSTCXX   = $(CXX)\n else\n HOSTCC    = gcc\n+HOSTCXX   = gxx\n endif\n HOSTAS    = as\n \n@@ -80,5 +83,5 @@ WERROR_FLAGS += -Wundef -Wwrite-strings\n # process cpu flags\n include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk\n \n-export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF\n+export CC CXX AS AR LD OBJCOPY OBJDUMP STRIP READELF\n export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS\n",
    "prefixes": [
        "dpdk-dev",
        "RFC",
        "1/7"
    ]
}