Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp4388138ybe; Mon, 16 Sep 2019 11:20:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqyEdxCN/bNj8DYrieQYS6QeqSHzAdFG1/hzQHpxF370SJhLFcmUPjVx++fUG1DIoDeMW2Aj X-Received: by 2002:a17:906:ece8:: with SMTP id qt8mr1257461ejb.5.1568658025917; Mon, 16 Sep 2019 11:20:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568658025; cv=none; d=google.com; s=arc-20160816; b=BNmVrvKWu3hJfr4bm8wIdd0YpLLk/CqT3rGANOke20b5/3gDTNBuxzMHvveZJJirFo kkzo5ofktgaZiwssLSrMnvdMWApxaVKdLMJqxUOGeY6+fd9eQGXDlnkiYXzEM5wAdKE3 uSNOF4zT3XLLkFKB/GkjtHTchfGRmwIL1RSipnyzXsodG61+anSDCPRPQKYuQ2KSRpPg hdS6/pZvgJ0jV33CnEFJEbnVo0Sa9DeIj3rnMV/I512ig/V4c4ngBUZkMprNXgYxA6AR E4OXvwSOAYMjWDnL5NoWZlREtrPV60+TdTwWP7tiLhN8JY9WAAhqWsogdXL5/vuESBCR NquQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=QxDLxAts+okFnGMG90FFtyZRtrZ/DaW/PKK2HTvYn5U=; b=XlmAUedtJPpDPfq1VUa8yy1DbpZpsLB4+ta2T/gTtyQuozvgh3zJn4Hc7UlrfUJ/aD +v/RsZ9QnvktDK0fuOEigquTdq49xArYZAH8Tpbd7b9xgjft1B0pvmRN9yiyq1n/ol3V gnG+LeyfsRJZA67M7kDmNwrn+2huTN1lz5EhdX+ozh8TtskQhLW7xz+kt9xaeaAHwrPj TScFjghRq1tZkOdjWjnLwnnv9IPNQLo3v69RN8EGqxt4+m/8v9alYyJb71yR1z6Ne3n6 o7JK4xi3sUvbjlygbZpmmk6tQDNW88LDnJ1VzV1PS+yJw+xBGXio2/YSxkSmVKY8rFOa yYIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VnA52KFS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g9si22046368edg.58.2019.09.16.11.20.01; Mon, 16 Sep 2019 11:20:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VnA52KFS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726316AbfIPKzg (ORCPT + 99 others); Mon, 16 Sep 2019 06:55:36 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:41138 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732504AbfIPKyx (ORCPT ); Mon, 16 Sep 2019 06:54:53 -0400 Received: by mail-lj1-f196.google.com with SMTP id f5so1272440ljg.8 for ; Mon, 16 Sep 2019 03:54:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=QxDLxAts+okFnGMG90FFtyZRtrZ/DaW/PKK2HTvYn5U=; b=VnA52KFSIyWMQb3/Iooa7EUs1aAXC0kYjZ0Il4q+2f33ttNnkrwJCJS5cIhuSV/8L+ JGGb5BMD2HXDU26gIyZm1rdD9CayW+BRe6usHa2bHSpJRsZ2uOB91FuQazlfqrZCRxrS v8EPFdm6HoxVpoByWOnjxnuejb+O0rGAtiqrh6wEVPImF/i8ca2RS7Q8g8B2xm/a5+fL 6094aS40v6CdjQecIi2vX8r2PPJpIeeYXClUuX9jK151mMz6LlgZvQtAEijqvEZcZYaZ KFjxLLsFntLvICjxu8Eiz+ff2wgGgl02YeZrhRni6ZM0sECdmJysWa2IaxK2MVUslDDV gHyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=QxDLxAts+okFnGMG90FFtyZRtrZ/DaW/PKK2HTvYn5U=; b=ek+iMZYfAAH4u4wo6tT6rvkRk+v6nu3F3y05OEIL+k4toTeQr/I8pmFKir3lM1e5Z8 7njXLw5sV8qVz/c2PGa04RlX5rf1RxrncHq+JYMVLVjuv4qMz3T0njVLBYe0+WMqWUji p9ZwlJEa6+MUujKOFLBxYUeiYCRff5VJJw3nPhbdRmLkmDyj6KKUKLYNvvr1+WKqDIc/ K2OGR+yy/FsXIjCgK57taZsgAOqdXemT7Hxv3900EmDW5dkIkDaYqRQYjJ8wdg2pv7RD onWARt4G+jyM22vT77DaHndVMNEMIiT3IiaRXrMpev5CySh1EoDj4LIxG0AaWRYUSvkj xZkQ== X-Gm-Message-State: APjAAAU0Uw777whxDO1Vn+lVNmXNJpnPE3cDX7eGnhR+7KEeF3Rq5Th2 8ml7nSSo+vZOg9UQXdJoYIC9JQ== X-Received: by 2002:a2e:b16b:: with SMTP id a11mr23700854ljm.83.1568631290649; Mon, 16 Sep 2019 03:54:50 -0700 (PDT) Received: from localhost.localdomain (168-200-94-178.pool.ukrtel.net. [178.94.200.168]) by smtp.gmail.com with ESMTPSA id v1sm8987737lfq.89.2019.09.16.03.54.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Sep 2019 03:54:50 -0700 (PDT) From: Ivan Khoronzhuk To: ast@kernel.org, daniel@iogearbox.net, yhs@fb.com, davem@davemloft.net, jakub.kicinski@netronome.com, hawk@kernel.org, john.fastabend@gmail.com Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, bpf@vger.kernel.org, clang-built-linux@googlegroups.com, sergei.shtylyov@cogentembedded.com, Ivan Khoronzhuk Subject: [PATCH v3 bpf-next 08/14] samples: bpf: makefile: base target programs rules on Makefile.target Date: Mon, 16 Sep 2019 13:54:27 +0300 Message-Id: <20190916105433.11404-9-ivan.khoronzhuk@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190916105433.11404-1-ivan.khoronzhuk@linaro.org> References: <20190916105433.11404-1-ivan.khoronzhuk@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The main reason for that - HOSTCC and CC have different aims. HOSTCC is used to build programs running on host, that can cross-comple target programs with CC. It was tested for arm and arm64 cross compilation, based on linaro toolchain, but should work for others. So, in order to split cross compilation (CC) with host build (HOSTCC), lets base samples on Makefile.target. It allows to cross-compile samples/bpf programs with CC while auxialry tools running on host built with HOSTCC. Signed-off-by: Ivan Khoronzhuk --- samples/bpf/Makefile | 135 ++++++++++++++++++++++--------------------- 1 file changed, 69 insertions(+), 66 deletions(-) diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile index 9d923546e087..1579cc16a1c2 100644 --- a/samples/bpf/Makefile +++ b/samples/bpf/Makefile @@ -4,55 +4,53 @@ BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src)) TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools # List of programs to build -hostprogs-y := test_lru_dist -hostprogs-y += sock_example -hostprogs-y += fds_example -hostprogs-y += sockex1 -hostprogs-y += sockex2 -hostprogs-y += sockex3 -hostprogs-y += tracex1 -hostprogs-y += tracex2 -hostprogs-y += tracex3 -hostprogs-y += tracex4 -hostprogs-y += tracex5 -hostprogs-y += tracex6 -hostprogs-y += tracex7 -hostprogs-y += test_probe_write_user -hostprogs-y += trace_output -hostprogs-y += lathist -hostprogs-y += offwaketime -hostprogs-y += spintest -hostprogs-y += map_perf_test -hostprogs-y += test_overhead -hostprogs-y += test_cgrp2_array_pin -hostprogs-y += test_cgrp2_attach -hostprogs-y += test_cgrp2_sock -hostprogs-y += test_cgrp2_sock2 -hostprogs-y += xdp1 -hostprogs-y += xdp2 -hostprogs-y += xdp_router_ipv4 -hostprogs-y += test_current_task_under_cgroup -hostprogs-y += trace_event -hostprogs-y += sampleip -hostprogs-y += tc_l2_redirect -hostprogs-y += lwt_len_hist -hostprogs-y += xdp_tx_iptunnel -hostprogs-y += test_map_in_map -hostprogs-y += per_socket_stats_example -hostprogs-y += xdp_redirect -hostprogs-y += xdp_redirect_map -hostprogs-y += xdp_redirect_cpu -hostprogs-y += xdp_monitor -hostprogs-y += xdp_rxq_info -hostprogs-y += syscall_tp -hostprogs-y += cpustat -hostprogs-y += xdp_adjust_tail -hostprogs-y += xdpsock -hostprogs-y += xdp_fwd -hostprogs-y += task_fd_query -hostprogs-y += xdp_sample_pkts -hostprogs-y += ibumad -hostprogs-y += hbm +tprogs-y := test_lru_dist +tprogs-y += sock_example +tprogs-y += fds_example +tprogs-y += sockex1 +tprogs-y += sockex2 +tprogs-y += sockex3 +tprogs-y += tracex1 +tprogs-y += tracex2 +tprogs-y += tracex3 +tprogs-y += tracex4 +tprogs-y += tracex5 +tprogs-y += tracex6 +tprogs-y += tracex7 +tprogs-y += test_probe_write_user +tprogs-y += trace_output +tprogs-y += lathist +tprogs-y += offwaketime +tprogs-y += spintest +tprogs-y += map_perf_test +tprogs-y += test_overhead +tprogs-y += test_cgrp2_array_pin +tprogs-y += test_cgrp2_attach +tprogs-y += test_cgrp2_sock +tprogs-y += test_cgrp2_sock2 +tprogs-y += xdp1 +tprogs-y += xdp2 +tprogs-y += xdp_router_ipv4 +tprogs-y += test_current_task_under_cgroup +tprogs-y += trace_event +tprogs-y += sampleip +tprogs-y += tc_l2_redirect +tprogs-y += lwt_len_hist +tprogs-y += xdp_tx_iptunnel +tprogs-y += test_map_in_map +tprogs-y += xdp_redirect_map +tprogs-y += xdp_redirect_cpu +tprogs-y += xdp_monitor +tprogs-y += xdp_rxq_info +tprogs-y += syscall_tp +tprogs-y += cpustat +tprogs-y += xdp_adjust_tail +tprogs-y += xdpsock +tprogs-y += xdp_fwd +tprogs-y += task_fd_query +tprogs-y += xdp_sample_pkts +tprogs-y += ibumad +tprogs-y += hbm # Libbpf dependencies LIBBPF = $(TOOLS_PATH)/lib/bpf/libbpf.a @@ -111,7 +109,7 @@ ibumad-objs := bpf_load.o ibumad_user.o $(TRACE_HELPERS) hbm-objs := bpf_load.o hbm.o $(CGROUP_HELPERS) # Tell kbuild to always build the programs -always := $(hostprogs-y) +always := $(tprogs-y) always += sockex1_kern.o always += sockex2_kern.o always += sockex3_kern.o @@ -170,21 +168,6 @@ always += ibumad_kern.o always += hbm_out_kern.o always += hbm_edt_kern.o -KBUILD_HOSTCFLAGS += -I$(objtree)/usr/include -KBUILD_HOSTCFLAGS += -I$(srctree)/tools/lib/bpf/ -KBUILD_HOSTCFLAGS += -I$(srctree)/tools/testing/selftests/bpf/ -KBUILD_HOSTCFLAGS += -I$(srctree)/tools/lib/ -I$(srctree)/tools/include -KBUILD_HOSTCFLAGS += -I$(srctree)/tools/perf - -HOSTCFLAGS_bpf_load.o += -Wno-unused-variable - -KBUILD_HOSTLDLIBS += $(LIBBPF) -lelf -HOSTLDLIBS_tracex4 += -lrt -HOSTLDLIBS_trace_output += -lrt -HOSTLDLIBS_map_perf_test += -lrt -HOSTLDLIBS_test_overhead += -lrt -HOSTLDLIBS_xdpsock += -pthread - ifeq ($(ARCH), arm) # Strip all except -D__LINUX_ARM_ARCH__ option needed to handle linux # headers when arm instruction set identification is requested. @@ -192,9 +175,27 @@ ARM_ARCH_SELECTOR = $(shell echo "$(KBUILD_CFLAGS) " | \ sed 's/[[:blank:]]/\n/g' | sed '/^-D__LINUX_ARM_ARCH__/!d') CLANG_EXTRA_CFLAGS := $(ARM_ARCH_SELECTOR) -KBUILD_HOSTCFLAGS := $(ARM_ARCH_SELECTOR) +TPROGS_CFLAGS += $(ARM_ARCH_SELECTOR) endif +TPROGS_LDLIBS := $(KBUILD_HOSTLDLIBS) +TPROGS_CFLAGS += $(KBUILD_HOSTCFLAGS) $(HOST_EXTRACFLAGS) +TPROGS_CFLAGS += -I$(objtree)/usr/include +TPROGS_CFLAGS += -I$(srctree)/tools/lib/bpf/ +TPROGS_CFLAGS += -I$(srctree)/tools/testing/selftests/bpf/ +TPROGS_CFLAGS += -I$(srctree)/tools/lib/ +TPROGS_CFLAGS += -I$(srctree)/tools/include +TPROGS_CFLAGS += -I$(srctree)/tools/perf + +TPROGCFLAGS_bpf_load.o += -Wno-unused-variable + +TPROGS_LDLIBS += $(LIBBPF) -lelf +TPROGLDLIBS_tracex4 += -lrt +TPROGLDLIBS_trace_output += -lrt +TPROGLDLIBS_map_perf_test += -lrt +TPROGLDLIBS_test_overhead += -lrt +TPROGLDLIBS_xdpsock += -pthread + # Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline: # make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang LLC ?= llc @@ -285,6 +286,8 @@ $(obj)/hbm_out_kern.o: $(src)/hbm.h $(src)/hbm_kern.h $(obj)/hbm.o: $(src)/hbm.h $(obj)/hbm_edt_kern.o: $(src)/hbm.h $(src)/hbm_kern.h +-include $(BPF_SAMPLES_PATH)/Makefile.target + # asm/sysreg.h - inline assembly used by it is incompatible with llvm. # But, there is no easy way to fix it, so just exclude it since it is # useless for BPF samples. -- 2.17.1