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)
|