xref: /f-stack/dpdk/examples/ethtool/lib/Makefile (revision 2d9fd380)
1d30ea906Sjfb8856606# SPDX-License-Identifier: BSD-3-Clause
2*2d9fd380Sjfb8856606# Copyright(c) 2015-2020 Intel Corporation
3a9643ea8Slogwang
4*2d9fd380Sjfb8856606
5*2d9fd380Sjfb8856606ifneq ($(shell pkg-config --exists libdpdk && echo 0),0)
6*2d9fd380Sjfb8856606$(error "no installation of DPDK found")
7*2d9fd380Sjfb8856606endif
8*2d9fd380Sjfb8856606ifneq ($(shell uname),Linux)
9*2d9fd380Sjfb8856606$(error This application can only operate in a linux environment)
10a9643ea8Slogwangendif
11a9643ea8Slogwang
12*2d9fd380Sjfb8856606PKGCONF ?= pkg-config
13a9643ea8Slogwang
14a9643ea8Slogwang# library name
15*2d9fd380Sjfb8856606LIB = librte_ethtool.so
16*2d9fd380Sjfb8856606LIB_STATIC = librte_ethtool.a
17*2d9fd380Sjfb8856606SRCS = rte_ethtool.c
18a9643ea8Slogwang
19a9643ea8SlogwangCFLAGS += -O3
20*2d9fd380Sjfb8856606CFLAGS += -fPIC
21d30ea906Sjfb8856606CFLAGS += -DALLOW_EXPERIMENTAL_API
22a9643ea8Slogwang
23*2d9fd380Sjfb8856606PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
24*2d9fd380Sjfb8856606CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
25*2d9fd380Sjfb8856606LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
26*2d9fd380Sjfb8856606LDFLAGS += -Wl,--no-undefined $(LDFLAGS_SHARED)
27a9643ea8Slogwang
28*2d9fd380Sjfb8856606# check for ixgbe by grepping pre-processor output
29*2d9fd380Sjfb8856606ifneq ($(shell $(CC) $(CFLAGS) -dM -E - < /dev/null | grep IXGBE),)
30*2d9fd380Sjfb8856606LDFLAGS += -lrte_net_ixgbe
31*2d9fd380Sjfb8856606endif
32*2d9fd380Sjfb8856606
33*2d9fd380Sjfb8856606.PHONY: all clean static shared
34*2d9fd380Sjfb8856606all shared: build/$(LIB)
35*2d9fd380Sjfb8856606static: build/$(LIB_STATIC)
36*2d9fd380Sjfb8856606
37*2d9fd380Sjfb8856606clean:
38*2d9fd380Sjfb8856606	rm -f build/$(LIB)
39*2d9fd380Sjfb8856606	test -d build && rmdir -p build || true
40*2d9fd380Sjfb8856606
41*2d9fd380Sjfb8856606build:
42*2d9fd380Sjfb8856606	@mkdir -p $@
43*2d9fd380Sjfb8856606
44*2d9fd380Sjfb8856606build/%.so: $(SRCS) Makefile $(PC_FILE) | build
45*2d9fd380Sjfb8856606	$(CC) $(CFLAGS) -o $@ -shared $(SRCS) $(LDFLAGS)
46*2d9fd380Sjfb8856606
47*2d9fd380Sjfb8856606build/%.a: $(SRCS) Makefile $(PC_FILE) | build
48*2d9fd380Sjfb8856606	$(CC) $(CFLAGS) -c $(SRCS) -o build/$(SRCS).o
49*2d9fd380Sjfb8856606	$(AR) -cr $@ build/*.o
50