228 lines
7.4 KiB
Makefile
228 lines
7.4 KiB
Makefile
VERSION = 1.5
|
|
CC = $(CROSS_COMPILE)gcc
|
|
AR = $(CROSS_COMPILE)ar
|
|
|
|
OBJDIR = bld
|
|
|
|
sources = cyclictest.c \
|
|
hackbench.c \
|
|
pip_stress.c \
|
|
pi_stress.c \
|
|
pmqtest.c \
|
|
ptsematest.c \
|
|
rt-migrate-test.c \
|
|
signaltest.c \
|
|
sigwaittest.c \
|
|
svsematest.c \
|
|
cyclicdeadline.c \
|
|
deadline_test.c \
|
|
queuelat.c \
|
|
ssdd.c
|
|
|
|
TARGETS = $(sources:.c=)
|
|
LIBS = -lrt -lpthread
|
|
RTTESTLIB = -lrttest -L$(OBJDIR)
|
|
EXTRA_LIBS ?= -ldl # for get_cpu
|
|
DESTDIR ?=
|
|
prefix ?= /usr/local
|
|
bindir ?= $(prefix)/bin
|
|
mandir ?= $(prefix)/share/man
|
|
srcdir ?= $(prefix)/src
|
|
|
|
CFLAGS ?= -Wall -Wno-nonnull
|
|
CPPFLAGS += -D_GNU_SOURCE -Isrc/include
|
|
LDFLAGS ?=
|
|
|
|
PYLIB ?= $(shell python3 -c 'import distutils.sysconfig; print (distutils.sysconfig.get_python_lib())')
|
|
|
|
ifndef DEBUG
|
|
CFLAGS += -O2 -g
|
|
else
|
|
CFLAGS += -O0 -g
|
|
endif
|
|
|
|
# We make some gueses on how to compile rt-tests based on the machine type
|
|
# and the ostype. These can often be overridden.
|
|
dumpmachine := $(shell $(CC) -dumpmachine)
|
|
|
|
# The ostype is typically something like linux or android
|
|
ostype := $(lastword $(subst -, ,$(dumpmachine)))
|
|
|
|
machinetype := $(shell echo $(dumpmachine)| \
|
|
sed -e 's/-.*//' -e 's/i.86/i386/' -e 's/mips.*/mips/' -e 's/ppc.*/powerpc/')
|
|
|
|
# The default is to assume you have libnuma installed, which is fine to do
|
|
# even on non-numa machines. If you don't want to install the numa libs, for
|
|
# example, they might not be available in an embedded environment, then
|
|
# compile with
|
|
# make NUMA=0
|
|
ifneq ($(filter x86_64 i386 ia64 mips powerpc,$(machinetype)),)
|
|
NUMA := 1
|
|
endif
|
|
|
|
# The default is to assume that you have numa_parse_cpustring_all
|
|
# If you have an older version of libnuma that only has numa_parse_cpustring
|
|
# then compile with
|
|
# make HAVE_PARSE_CPUSTRING_ALL=0
|
|
HAVE_PARSE_CPUSTRING_ALL?=1
|
|
ifeq ($(NUMA),1)
|
|
CFLAGS += -DNUMA
|
|
NUMA_LIBS = -lnuma
|
|
ifeq ($(HAVE_PARSE_CPUSTRING_ALL),1)
|
|
CFLAGS += -DHAVE_PARSE_CPUSTRING_ALL
|
|
endif
|
|
endif
|
|
|
|
include src/arch/android/Makefile
|
|
|
|
VPATH = src/cyclictest:
|
|
VPATH += src/signaltest:
|
|
VPATH += src/pi_tests:
|
|
VPATH += src/rt-migrate-test:
|
|
VPATH += src/ptsematest:
|
|
VPATH += src/sigwaittest:
|
|
VPATH += src/svsematest:
|
|
VPATH += src/pmqtest:
|
|
VPATH += src/lib:
|
|
VPATH += src/hackbench:
|
|
VPATH += src/sched_deadline:
|
|
VPATH += src/queuelat:
|
|
VPATH += src/ssdd:
|
|
|
|
$(OBJDIR)/%.o: %.c | $(OBJDIR)
|
|
$(CC) -D VERSION=$(VERSION) -c $< $(CFLAGS) $(CPPFLAGS) -o $@
|
|
|
|
# Pattern rule to generate dependency files from .c files
|
|
$(OBJDIR)/%.d: %.c | $(OBJDIR)
|
|
@$(CC) -MM $(CFLAGS) $(CPPFLAGS) $< | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' > $@ || rm -f $@
|
|
|
|
.PHONY: all
|
|
all: $(TARGETS) hwlatdetect | $(OBJDIR)
|
|
|
|
$(OBJDIR):
|
|
mkdir $(OBJDIR)
|
|
|
|
# Include dependency files, automatically generate them if needed.
|
|
-include $(addprefix $(OBJDIR)/,$(sources:.c=.d))
|
|
|
|
cyclictest: $(OBJDIR)/cyclictest.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(NUMA_LIBS)
|
|
|
|
cyclicdeadline: $(OBJDIR)/cyclicdeadline.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
|
|
|
|
deadline_test: $(OBJDIR)/deadline_test.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
|
|
|
|
signaltest: $(OBJDIR)/signaltest.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
|
|
|
|
pi_stress: $(OBJDIR)/pi_stress.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
|
|
|
|
hwlatdetect: src/hwlatdetect/hwlatdetect.py
|
|
chmod +x src/hwlatdetect/hwlatdetect.py
|
|
ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
|
|
|
|
rt-migrate-test: $(OBJDIR)/rt-migrate-test.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
|
|
|
|
ptsematest: $(OBJDIR)/ptsematest.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(EXTRA_LIBS)
|
|
|
|
sigwaittest: $(OBJDIR)/sigwaittest.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(EXTRA_LIBS)
|
|
|
|
svsematest: $(OBJDIR)/svsematest.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(EXTRA_LIBS)
|
|
|
|
pmqtest: $(OBJDIR)/pmqtest.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB) $(EXTRA_LIBS)
|
|
|
|
pip_stress: $(OBJDIR)/pip_stress.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
|
|
|
|
hackbench: $(OBJDIR)/hackbench.o
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS)
|
|
|
|
queuelat: $(OBJDIR)/queuelat.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
|
|
|
|
ssdd: $(OBJDIR)/ssdd.o $(OBJDIR)/librttest.a
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(RTTESTLIB)
|
|
|
|
LIBOBJS =$(addprefix $(OBJDIR)/,error.o rt-get_cpu.o rt-sched.o rt-utils.o)
|
|
$(OBJDIR)/librttest.a: $(LIBOBJS)
|
|
$(AR) rcs $@ $^
|
|
|
|
CLEANUP = $(TARGETS) *.o .depend *.*~ *.orig *.rej *.d *.a
|
|
CLEANUP += $(if $(wildcard .git), ChangeLog)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
for F in $(CLEANUP); do find -type f -name $$F | xargs rm -f; done
|
|
rm -f rt-tests-*.tar
|
|
rm -f hwlatdetect
|
|
rm -f tags
|
|
|
|
RPMDIRS = BUILD BUILDROOT RPMS SRPMS SPECS
|
|
.PHONY: distclean
|
|
distclean: clean
|
|
rm -rf $(RPMDIRS) releases *.tar.gz *.tar.asc tmp
|
|
|
|
.PHONY: rebuild
|
|
rebuild:
|
|
$(MAKE) clean
|
|
$(MAKE) all
|
|
|
|
.PHONY: install
|
|
install: all install_hwlatdetect
|
|
mkdir -p "$(DESTDIR)$(bindir)" "$(DESTDIR)$(mandir)/man4"
|
|
mkdir -p "$(DESTDIR)$(srcdir)" "$(DESTDIR)$(mandir)/man8"
|
|
cp $(TARGETS) "$(DESTDIR)$(bindir)"
|
|
install src/queuelat/get_cpuinfo_mhz.sh "$(DESTDIR)$(bindir)"
|
|
install src/queuelat/determine_maximum_mpps.sh "${DESTDIR}${bindir}"
|
|
gzip -c src/cyclictest/cyclictest.8 >"$(DESTDIR)$(mandir)/man8/cyclictest.8.gz"
|
|
gzip -c src/pi_tests/pi_stress.8 >"$(DESTDIR)$(mandir)/man8/pi_stress.8.gz"
|
|
gzip -c src/ptsematest/ptsematest.8 >"$(DESTDIR)$(mandir)/man8/ptsematest.8.gz"
|
|
gzip -c src/rt-migrate-test/rt-migrate-test.8 >"$(DESTDIR)$(mandir)/man8/rt-migrate-test.8.gz"
|
|
gzip -c src/sigwaittest/sigwaittest.8 >"$(DESTDIR)$(mandir)/man8/sigwaittest.8.gz"
|
|
gzip -c src/svsematest/svsematest.8 >"$(DESTDIR)$(mandir)/man8/svsematest.8.gz"
|
|
gzip -c src/pmqtest/pmqtest.8 >"$(DESTDIR)$(mandir)/man8/pmqtest.8.gz"
|
|
gzip -c src/hackbench/hackbench.8 >"$(DESTDIR)$(mandir)/man8/hackbench.8.gz"
|
|
gzip -c src/signaltest/signaltest.8 >"$(DESTDIR)$(mandir)/man8/signaltest.8.gz"
|
|
gzip -c src/pi_tests/pip_stress.8 >"$(DESTDIR)$(mandir)/man8/pip_stress.8.gz"
|
|
gzip -c src/queuelat/queuelat.8 >"$(DESTDIR)$(mandir)/man8/queuelat.8.gz"
|
|
gzip -c src/sched_deadline/deadline_test.8 >"$(DESTDIR)$(mandir)/man8/deadline_test.8.gz"
|
|
gzip -c src/ssdd/ssdd.8 >"$(DESTDIR)$(mandir)/man8/ssdd.8.gz"
|
|
|
|
.PHONY: install_hwlatdetect
|
|
install_hwlatdetect: hwlatdetect
|
|
if test -n "$(PYLIB)" ; then \
|
|
mkdir -p "$(DESTDIR)$(bindir)" "$(DESTDIR)$(mandir)/man8" ; \
|
|
install -D -m 755 src/hwlatdetect/hwlatdetect.py $(DESTDIR)$(PYLIB)/hwlatdetect.py ; \
|
|
rm -f "$(DESTDIR)$(bindir)/hwlatdetect" ; \
|
|
ln -s $(PYLIB)/hwlatdetect.py "$(DESTDIR)$(bindir)/hwlatdetect" ; \
|
|
gzip -c src/hwlatdetect/hwlatdetect.8 >"$(DESTDIR)$(mandir)/man8/hwlatdetect.8.gz" ; \
|
|
fi
|
|
|
|
.PHONY: tarball
|
|
tarball:
|
|
git archive --worktree-attributes --prefix=rt-tests-${VERSION}/ -o rt-tests-${VERSION}.tar v${VERSION}
|
|
|
|
.PHONY: help
|
|
help:
|
|
@echo ""
|
|
@echo " rt-tests useful Makefile targets:"
|
|
@echo ""
|
|
@echo " all : build all tests (default"
|
|
@echo " install : install tests to local filesystem"
|
|
@echo " clean : remove object files"
|
|
@echo " distclean : remove all generated files"
|
|
@echo " tarball : make a rt-tests tarball suitable for release"
|
|
@echo " help : print this message"
|
|
|
|
.PHONY: tags
|
|
tags:
|
|
ctags -R --extra=+f --c-kinds=+p --exclude=tmp --exclude=BUILD *
|