xref: /f-stack/dpdk/examples/ipsec-secgw/Makefile (revision 4418919f)
1d30ea906Sjfb8856606# SPDX-License-Identifier: BSD-3-Clause
2d30ea906Sjfb8856606# Copyright(c) 2016 Intel Corporation
3d30ea906Sjfb8856606
4d30ea906Sjfb8856606APP = ipsec-secgw
5d30ea906Sjfb8856606
6a9643ea8Slogwang#
7d30ea906Sjfb8856606# all source are stored in SRCS-y
8a9643ea8Slogwang#
9d30ea906Sjfb8856606SRCS-y += parser.c
10d30ea906Sjfb8856606SRCS-y += ipsec.c
11d30ea906Sjfb8856606SRCS-y += esp.c
12d30ea906Sjfb8856606SRCS-y += sp4.c
13d30ea906Sjfb8856606SRCS-y += sp6.c
14d30ea906Sjfb8856606SRCS-y += sa.c
15d30ea906Sjfb8856606SRCS-y += rt.c
16*4418919fSjohnjiangSRCS-y += ipsec_process.c
17d30ea906Sjfb8856606SRCS-y += ipsec-secgw.c
18d30ea906Sjfb8856606
19d30ea906Sjfb8856606CFLAGS += -gdwarf-2
20d30ea906Sjfb8856606
21d30ea906Sjfb8856606# Build using pkg-config variables if possible
224b05018fSfengbojiangifeq ($(shell pkg-config --exists libdpdk && echo 0),0)
23d30ea906Sjfb8856606
24d30ea906Sjfb8856606all: shared
25d30ea906Sjfb8856606.PHONY: shared static
26d30ea906Sjfb8856606shared: build/$(APP)-shared
27d30ea906Sjfb8856606	ln -sf $(APP)-shared build/$(APP)
28d30ea906Sjfb8856606static: build/$(APP)-static
29d30ea906Sjfb8856606	ln -sf $(APP)-static build/$(APP)
30d30ea906Sjfb8856606
31*4418919fSjohnjiangPKGCONF ?= pkg-config
32*4418919fSjohnjiang
33*4418919fSjohnjiangPC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
34*4418919fSjohnjiangCFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
35*4418919fSjohnjiangLDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
36*4418919fSjohnjiangLDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
37d30ea906Sjfb8856606
38d30ea906Sjfb8856606CFLAGS += -DALLOW_EXPERIMENTAL_API
39d30ea906Sjfb8856606
40d30ea906Sjfb8856606build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
41d30ea906Sjfb8856606	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
42d30ea906Sjfb8856606
43d30ea906Sjfb8856606build/$(APP)-static: $(SRCS-y) Makefile $(PC_FILE) | build
44d30ea906Sjfb8856606	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_STATIC)
45d30ea906Sjfb8856606
46d30ea906Sjfb8856606build:
47d30ea906Sjfb8856606	@mkdir -p $@
48d30ea906Sjfb8856606
49d30ea906Sjfb8856606.PHONY: clean
50d30ea906Sjfb8856606clean:
51d30ea906Sjfb8856606	rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared
524b05018fSfengbojiang	test -d build && rmdir -p build || true
53d30ea906Sjfb8856606
54d30ea906Sjfb8856606else
55a9643ea8Slogwang
56a9643ea8Slogwangifeq ($(RTE_SDK),)
57a9643ea8Slogwang$(error "Please define RTE_SDK environment variable")
58a9643ea8Slogwangendif
59a9643ea8Slogwang
60*4418919fSjohnjiang# Default target, detect a build directory, by looking for a path with a .config
61*4418919fSjohnjiangRTE_TARGET ?= $(notdir $(abspath $(dir $(firstword $(wildcard $(RTE_SDK)/*/.config)))))
62a9643ea8Slogwang
63a9643ea8Slogwanginclude $(RTE_SDK)/mk/rte.vars.mk
64a9643ea8Slogwang
652bfe3f2eSlogwangifneq ($(MAKECMDGOALS),clean)
66*4418919fSjohnjiangifneq ($(CONFIG_RTE_LIBRTE_IPSEC),y)
67*4418919fSjohnjiang$(error "RTE_LIBRTE_IPSEC is required to build ipsec-secgw")
682bfe3f2eSlogwangendif
692bfe3f2eSlogwangendif
702bfe3f2eSlogwang
71d30ea906Sjfb8856606CFLAGS += -DALLOW_EXPERIMENTAL_API
72a9643ea8SlogwangCFLAGS += -O3 -gdwarf-2
73a9643ea8SlogwangCFLAGS += $(WERROR_FLAGS)
74a9643ea8Slogwangifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
75a9643ea8SlogwangCFLAGS_sa.o += -diag-disable=vec
76a9643ea8Slogwangendif
77a9643ea8Slogwang
78a9643ea8Slogwangifeq ($(DEBUG),1)
79a9643ea8SlogwangCFLAGS += -DIPSEC_DEBUG -fstack-protector-all -O0
80a9643ea8Slogwangendif
81a9643ea8Slogwang
825af785ecSfengbojiang(姜凤波)include $(RTE_SDK)/mk/rte.extapp.mk
83d30ea906Sjfb8856606
84d30ea906Sjfb8856606endif
85