Files
dpdk-ws-client/Makefile

74 lines
1.9 KiB
Makefile
Executable File

# SPDX-License-Identifier: BSD-3-Clause
# DPDK WebSocket Client - Makefile (DPDK 24.11)
APP = dpdk_ws_client
BUILD_DIR = build
# DPDK 24.11 pkg-config (meson build)
DPDK_BUILD = /home/wxj/share/dpdk-study/sources/dpdk-24.11/build
PKG_CONFIG_PATH := $(DPDK_BUILD)/meson-uninstalled
PKGCONF = PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" pkg-config
# Library: use libdpdk-libs for shared linking (PMDs loaded as plugins)
DPDK_CFLAGS := $(shell $(PKGCONF) --cflags libdpdk-libs 2>/dev/null || echo "ERROR: DPDK pkg-config not found")
DPDK_LIBS := $(shell $(PKGCONF) --libs libdpdk-libs 2>/dev/null)
# Source files
SRCS := src/main.c
SRCS += src/tcp_core.c
SRCS += src/tcp_input.c
SRCS += src/tcp_output.c
SRCS += src/tcp_timer.c
SRCS += src/tcp_socket.c
SRCS += src/ws_client.c
OBJS := $(SRCS:%.c=$(BUILD_DIR)/%.o)
DEPS := $(OBJS:.o=.d)
CFLAGS = -O2 -g -Wall -Wno-unused-parameter -Wno-unused-function
CFLAGS += -DALLOW_EXPERIMENTAL_API
CFLAGS += -Isrc/
CFLAGS += $(DPDK_CFLAGS)
LDFLAGS = $(DPDK_LIBS) -lpthread -ldl -lnuma
LDFLAGS += -Wl,--allow-multiple-definition
LDFLAGS += -Wl,-rpath,$(DPDK_BUILD)/lib
.PHONY: all clean clean-all perf
all: $(BUILD_DIR)/$(APP)
# Performance test binary
PERF_SRCS := src/perf_test.c
PERF_SRCS += src/tcp_core.c
PERF_SRCS += src/tcp_input.c
PERF_SRCS += src/tcp_output.c
PERF_SRCS += src/tcp_timer.c
PERF_SRCS += src/tcp_socket.c
PERF_SRCS += src/ws_client.c
PERF_OBJS := $(PERF_SRCS:%.c=$(BUILD_DIR)/%.o)
perf: $(BUILD_DIR)/dpdk_perf
$(BUILD_DIR)/dpdk_perf: $(PERF_OBJS)
@mkdir -p $(@D)
PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" gcc $(PERF_OBJS) $(LDFLAGS) -o $@
@echo " LINK $@"
-include $(DEPS)
$(BUILD_DIR)/$(APP): $(OBJS)
@mkdir -p $(@D)
PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" gcc $(OBJS) $(LDFLAGS) -o $@
@echo " LINK $@"
$(BUILD_DIR)/%.o: %.c
@mkdir -p $(@D)
PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" gcc $(CFLAGS) -MMD -c $< -o $@
@echo " CC $<"
clean:
rm -rf $(BUILD_DIR)
clean-all: clean
rm -f $(APP)