Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/4002/?format=api
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" ] }{ "id": 4002, "url": "