mirror of
https://github.com/vel21ripn/nDPI.git
synced 2026-04-28 23:19:42 +00:00
Fix improper handling of CFLAGS and LDFLAGS throughout the build system.
Also remove hardcoded debug flags that prevented production builds
without symbols.
Problems:
---------
1. CFLAGS/LDFLAGS handling:
The build system was using `CFLAGS +=` and `LDFLAGS +=` to append
package-specific flags, which modifies the user's environment variables
instead of keeping package and user flags separate. This caused:
- User-specified optimization levels being overridden by package defaults
- Inability to properly override flags at configure or make time
- Problems with cross-compilation and embedded toolchains
2. Hardcoded -g flags:
Debug symbols (-g) were hardcoded in several Makefiles, forcing debug
symbols in all builds including production. This caused:
- Larger binary sizes (library and tools)
- No way to build without debug symbols
- Conflicts with user's debug level preferences (-g1, -g2, -g3)
- Redundancy with configure options (--enable-debug-build)
Solutions:
----------
1. Implement proper CFLAGS/LDFLAGS separation using AM_CFLAGS/AM_LDFLAGS:
- Added `CFLAGS = @CFLAGS@` to preserve configure-time flags
- Added `LDFLAGS = @LDFLAGS@` to preserve configure-time flags
- Changed `CFLAGS +=` to `AM_CFLAGS =` and `AM_CFLAGS +=`
- Changed `LDFLAGS +=` to `AM_LDFLAGS =` and `AM_LDFLAGS +=`
- Updated compilation rules: $(CC) $(AM_CFLAGS) $(CFLAGS) ...
- Updated linking rules: $(CC) ... $(AM_LDFLAGS) $(LDFLAGS) ...
2. Remove all hardcoded -g flags from Makefiles:
- Debug symbols now controlled via configure (--enable-debug-build)
or user CFLAGS (e.g., CFLAGS="-g3")
Flag ordering ensures:
- Package flags come first (e.g., -O2, -fPIC)
- User flags come after and can override (e.g., -O3)
- Last flag wins for conflicting options
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
28 lines
862 B
Text
28 lines
862 B
Text
#
|
|
# Run 'make -f Makefile.dpdk' to compile the DPDK examples
|
|
#
|
|
# See http://core.dpdk.org/doc/quick-start/ for DPDK installation and setup
|
|
#
|
|
ifeq ($(RTE_SDK),)
|
|
#$(error "Please define RTE_SDK environment variable")
|
|
RTE_SDK = $(HOME)/DPDK
|
|
RTE_TARGET = build
|
|
endif
|
|
|
|
# Default target, can be overridden by command line or environment
|
|
RTE_TARGET ?= x86_64-native-linuxapp-gcc
|
|
|
|
include $(RTE_SDK)/mk/rte.vars.mk
|
|
|
|
APP = ndpiReader.dpdk
|
|
LIBNDPI = $(PWD)/../src/lib/libndpi.a
|
|
|
|
SRCS-y := reader_util.c ndpiReader.c
|
|
|
|
# Preserve user's CFLAGS from configure and add package flags
|
|
USER_CFLAGS = @CFLAGS@
|
|
CFLAGS += -Wno-strict-prototypes -Wno-missing-prototypes -Wno-missing-declarations -Wno-unused-parameter -I $(PWD)/../src/include -DUSE_DPDK $(USER_CFLAGS)
|
|
LDLIBS = $(LIBNDPI) @PCAP_LIB@ @LIBS@ @ADDITIONAL_LIBS@ -lpthread @LDFLAGS@
|
|
|
|
include $(RTE_SDK)/mk/rte.extapp.mk
|
|
|