M7350/wlan/tools/dsrc/Makefile
2024-09-09 08:57:42 +00:00

113 lines
3.6 KiB
Makefile

# run tests on the host platform, everything else is cross-compiled
# Note: if running both testing and cross-compiling for target, make
# sure and run make clean between targets. The object files
# for testing and for cross-compiling are the same but compiled
# for different platforms so they need to be deleted
ifdef CROSS_COMPILE
CC := $(CROSS_COMPILE)gcc
CXX := $(CROSS_COMPILE)g++
endif
ifeq ($(MAKECMDGOALS),test)
CFLAGS+=-g
endif
CFLAGS += -Wall -Werror
CPPFLAGS += -MMD -MP -I inc
# Distinguish between libnl-2.0 and libnl-3.0
ifdef HAVE_LIBNL3
CPPFLAGS += -I /usr/arm-linux-gnueabihf/include/libnl3
LDFLAGS := -lnl-3 -lnl-genl-3
else
ifdef HAVE_LIBNL
LDFLAGS := -lnl -lnl-genl
endif
endif
ifdef SYSROOT
CFLAGS += --sysroot=$(SYSROOT)
LDFLAGS += --sysroot=$(SYSROOT)
endif
OBJDIR = $(CROSS_COMPILE)obj
BINDIR = $(CROSS_COMPILE)bin
VPATH=src
CPPFLAGS += -I src
#-------------------------------------------------------------------------------
# rules specific to this project
#-------------------------------------------------------------------------------
all: $(BINDIR)/dsrc_rx $(BINDIR)/dsrc_tx $(BINDIR)/dsrc_set_chan
docs:
$(MAKE) -C doxy
test: unit_test
./unit_test
TEST_SRCS: unit_test.c dsrc_util.c dsrc_sock.c strlcpy.c
RX_SRCS: dsrc_rx.c dsrc_util.c crc.c dsrc_sock.c strlcpy.c
TX_SRCS: dsrc_tx.c dsrc_util.c crc.c strlcpy.c
ALL_SRCS: $(TEST_SRCS) $(RX_SRCS) $(TX_SRCS)
unit_test: unit_test.o dsrc_util.o strlcpy.o
$(BINDIR)/dsrc_rx: $(OBJDIR)/dsrc_rx.o $(OBJDIR)/dsrc_util.o $(OBJDIR)/crc.o $(OBJDIR)/dsrc_sock.o $(OBJDIR)/strlcpy.o
$(BINDIR)/dsrc_tx: $(OBJDIR)/dsrc_tx.o $(OBJDIR)/dsrc_util.o $(OBJDIR)/crc.o $(OBJDIR)/dsrc_sock.o $(OBJDIR)/strlcpy.o
$(BINDIR)/dsrc_set_chan: $(OBJDIR)/dsrc_set_chan.o $(OBJDIR)/dsrc_util.o $(OBJDIR)/strlcpy.o
help:
@echo "------------------------------------------------------------------------------"
@echo "By default this build will attempt to cross compile for \"arm-linux-gnueabihf-\""
@echo "variant."
@echo ""
@echo "To cross compile for a specific a target:"
@echo "CROSS_COMPILE=arm-oe-linux-gnueabi- make all"
@echo ""
@echo "To cross compile using native gcc:"
@echo "CROSS_COMPILE= make all"
@echo ""
@echo "Make targets are:"
@echo ""
@echo "all - all components of this project, except documentation."
@echo "clean - clean all components, except documentation."
@echo "docs - build documentation. see docs/html/index.html. Requires doxygen 1.8.10"
@echo "docs_clean - clean the documentation."
@echo "------------------------------------------------------------------------------"
#-------------------------------------------------------------------------------
# nl80211 rules
#-------------------------------------------------------------------------------
dsrc_config: $(BINDIR) $(BINDIR)/dsrc_config
$(BINDIR)/dsrc_config: $(OBJDIR)/dsrc_config.o $(OBJDIR)/dsrc_nl.o $(OBJDIR)/dsrc_dcc.o
${CC} $(OBJDIR)/dsrc_config.o $(OBJDIR)/dsrc_dcc.o $(OBJDIR)/dsrc_nl.o \
-o $(BINDIR)/dsrc_config ${LDFLAGS}
cp dcc.dat $(BINDIR)/dcc.dat
#-------------------------------------------------------------------------------
# generic rules
#-------------------------------------------------------------------------------
$(BINDIR) $(OBJDIR):
@mkdir -p $@
$(BINDIR)/%: | $(BINDIR)
$(CC) $(LDFLAGS) $(LOADLIBES) $(LDLIBS) -o $@ $^
$(OBJDIR)/%.o: %.c | $(OBJDIR)
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
clean:
rm -rf $(BINDIR) $(OBJDIR)
docs_clean:
rm -rf docs
.PHONY: test all clean docs docs_clean dsrc_config help
-include $(ALL_SRCS:%.c=$(OBJDIR)/%.d)