blob: d83ae4bb1cab0704c15cb75ec2213810de500665 [file] [log] [blame]
default: all
PREFIX=/
BINDIR=$(DESTDIR)$(PREFIX)/bin
LIBDIR=$(DESTDIR)$(PREFIX)/lib
TARGETS=\
alivemonitor \
asus_hosts \
balloon \
bsa2bluez \
buttonmon \
isoping \
isostream \
chg_mod_own \
dir-monitor \
diskbench \
ionice \
mcastreceive \
memwatcher \
multicast_join \
logos \
randomdata \
readubootver \
realtime \
rtwatcher \
setuid \
soft_rc \
stun \
udpburst \
usleep \
wait-until-created \
statpitcher \
statcatcher \
watch-dir
HOST_TARGETS=$(addprefix host-,$(TARGETS))
LIB_TARGETS=\
stdoutline.so
TEST_TARGETS=\
host-utils_test \
host-asus_hosts_test
SCRIPT_TARGETS=\
is-secure-boot
ARCH_TARGETS=
ifeq ($(BUILD_SSDP),y)
TARGETS += ssdp_poll
endif
ifeq ($(BUILD_DNSSD),y)
# Don't bother building for host
ARCH_TARGETS += dnssd_hosts
endif
ifeq ($(BRUNO_ARCH),mips)
ARCH_TARGETS += bigbin
endif
AS=$(CROSS_COMPILE)as
CC=$(CROSS_COMPILE)gcc
CXX=$(CROSS_COMPILE)g++
HOST_CC ?= cc
HOST_CXX ?= g++
HOST_PROTOC ?= $(HOSTDIR)/usr/bin/protoc
CFLAGS += -Wall -Wextra -Wswitch-enum -Werror -Wno-unused-parameter \
-g -O -std=c99 -D_GNU_SOURCE
CXXFLAGS += -Wall -Wextra -Wswitch-enum -Werror -Wno-unused-parameter \
-g -O -std=gnu++0x -D_GNU_SOURCE
HOST_PROTO_INCS=-I$(HOSTDIR)/usr/include
INCS=-I../libstacktrace
.PRECIOUS: %.o host-%.o
all: $(TARGETS) $(HOST_TARGETS) $(LIB_TARGETS) $(ARCH_TARGETS) $(TEST_TARGETS)
install:
mkdir -p $(BINDIR) $(LIBDIR)
cp $(TARGETS) $(ARCH_TARGETS) $(BINDIR)
cp $(LIB_TARGETS) $(LIBDIR)
for n in $(SCRIPT_TARGETS); do \
test ! -f $$n.$(BR2_TARGET_GENERIC_PLATFORM_NAME) || \
cp -f $$n.$(BR2_TARGET_GENERIC_PLATFORM_NAME) $(BINDIR)/$$n; \
done
install-libs:
@echo "No libs to install."
%.o: %.c
$(CC) $(CFLAGS) $(INCS) -o $@ -c $<
%.po: %.c
$(CC) $(CFLAGS) -fPIC $(INCS) -o $@ -c $<
%.o: %.cc
$(CXX) $(CXXFLAGS) $(INCS) -o $@ -c $<
%.po: %.cc
$(CXX) $(CXXFLAGS) -fPIC $(INCS) -o $@ -c $<
host-%.o: %.c
$(HOST_CC) $(CFLAGS) $(INCS) -DCOMPILE_FOR_HOST=1 -o $@ -c $<
host-%.o: %.cc
$(HOST_CXX) $(CXXFLAGS) $(INCS) $(HOST_PROTO_INCS) -DCOMPILE_FOR_HOST=1 -o $@ -c $<
%: %.o
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS)
host-%: host-%.o
$(HOST_CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS)
%: %.py
ln -s $< $@
host-%: %.py
ln -s $< $@
%.so: %.po
$(CC) $(CFLAGS) $(INCS) -o $@ -fPIC -shared -Wl,-soname,$@ $<
%.pb.cc: %.proto
echo "Building .pb.cc"
$(HOST_PROTOC) --cpp_out=. $<
host-%.pb.cc: %.proto
echo "Building .pb.cc"
$(HOST_PROTOC) --cpp_out=. $<
host-isoping isoping: LIBS+=-lrt
host-isostream isostream: LIBS+=-lrt
host-diskbench diskbench: LIBS+=-lpthread -lrt
dnssd_hosts: LIBS+=-lavahi-client -lavahi-common
host-dnssd_hosts: LIBS+=-lavahi-client
host-logos logos: LIBS+=-lrt
logos: LIBS+=-L../libstacktrace -lstacktrace
host-rtwatcher rtwatcher: LIBS+=-lpthread -lrt
host-realtime realtime: LIBS+=-lpthread
host-alivemonitor alivemonitor: LIBS+=-lrt
host-buttonmon buttonmon: LIBS+=-lrt
alivemonitor: alivemonitor.o
isoping: isoping.o
isostream: isostream.o
diskbench: diskbench.o
dnssd_hosts: dnssd_hosts.o
host-logos: host-logos.o host-utils.o
logos: logos.o utils.o
realtime: realtime.o
rtwatcher: rtwatcher.o
bigbin: bigbin.o bigtext.o
buttonmon: buttonmon.o
host-utils_test: host-utils_test.o host-utils.o
ssdp_poll: ssdp_poll.o
statpitcher.o: device_stats.pb.o
statpitcher: LIBS+=-L$(DESTDIR)$(PREFIX)/usr/lib -lprotobuf-lite -lpthread
statpitcher: device_stats.pb.o statpitcher.o
host-statpitcher: LIBS+=-L$(HOSTDIR)/usr/lib -lprotobuf-lite -lpthread
host-statpitcher: host-device_stats.pb.o host-statpitcher.o
statcatcher.o: device_stats.pb.o
statcatcher: LIBS+=-L$(DESTDIR)$(PREFIX)/usr/lib -lprotobuf-lite -lpthread
statcatcher: device_stats.pb.o statcatcher.o
host-statcatcher: LIBS+=-L$(HOSTDIR)/usr/lib -lprotobuf-lite -lpthread
host-statcatcher: host-device_stats.pb.o host-statcatcher.o
bigtext.o: bigtext.S
$(AS) -mabi=32 -mips32 -EL -o $@ $^
TESTS=$(wildcard test-*.sh) $(wildcard test-*.py) $(wildcard *_test.py) $(TEST_TARGETS)
runtests: all $(TESTS)
set -e; \
for d in $(TESTS); do \
echo Running $$d; \
./$$d; \
done
test: all $(TESTS)
./wvtest/wvtestrun $(MAKE) runtests
clean:
rm -f *.o $(TARGETS) $(HOST_TARGETS) $(ARCH_TARGETS) *~ .*~ */*.pyc test_file *.pb.*
rm -rf test_dir