113 lines
3.6 KiB
Makefile
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)
|