173 lines
4.7 KiB
Makefile
173 lines
4.7 KiB
Makefile
VERSION_STRING = 0.66
|
|
|
|
sources = cyclictest.c signaltest.c pi_stress.c rt-migrate-test.c \
|
|
ptsematest.c sigwaittest.c svsematest.c sendme.c pip.c
|
|
|
|
TARGETS = $(sources:.c=)
|
|
|
|
LIBS = -lrt -lpthread
|
|
EXTRA_LIBS ?= -ldl # for get_cpu
|
|
DESTDIR ?=
|
|
prefix ?= /usr/local
|
|
bindir ?= $(prefix)/bin
|
|
mandir ?= $(prefix)/share/man
|
|
srcdir ?= $(prefix)/src
|
|
|
|
CFLAGS = -D_GNU_SOURCE -Wall -Wno-nonnull -Isrc/include
|
|
|
|
PYLIB := $(shell python -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib()')
|
|
|
|
ifndef DEBUG
|
|
CFLAGS += -O2
|
|
else
|
|
CFLAGS += -O0 -g
|
|
endif
|
|
|
|
ifdef NUMA
|
|
CFLAGS += -DNUMA
|
|
NUMA_LIBS = -lnuma
|
|
endif
|
|
|
|
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/backfire:
|
|
VPATH += src/lib
|
|
|
|
%.o: %.c
|
|
$(CC) -D VERSION_STRING=$(VERSION_STRING) -c $< $(CFLAGS)
|
|
|
|
# Pattern rule to generate dependency files from .c files
|
|
%.d: %.c
|
|
@set -e; rm -f $@; \
|
|
$(CC) -MM $(CFLAGS) $< > $@.$$$$; \
|
|
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
|
|
rm -f $@.$$$$
|
|
|
|
.PHONY: all
|
|
all: $(TARGETS) hwlatdetect
|
|
|
|
# Include dependency files, automatically generate them if needed.
|
|
-include $(sources:.c=.d)
|
|
|
|
cyclictest: cyclictest.o rt-utils.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(NUMA_LIBS)
|
|
|
|
signaltest: signaltest.o rt-utils.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
|
|
|
|
pi_stress: pi_stress.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
|
|
|
|
hwlatdetect: src/hwlatdetect/hwlatdetect.py
|
|
chmod +x src/hwlatdetect/hwlatdetect.py
|
|
ln -s src/hwlatdetect/hwlatdetect.py hwlatdetect
|
|
|
|
rt-migrate-test: rt-migrate-test.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
|
|
|
|
ptsematest: ptsematest.o rt-utils.o rt-get_cpu.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS)
|
|
|
|
sigwaittest: sigwaittest.o rt-utils.o rt-get_cpu.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS)
|
|
|
|
svsematest: svsematest.o rt-utils.o rt-get_cpu.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS)
|
|
|
|
sendme: sendme.o rt-utils.o rt-get_cpu.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS) $(EXTRA_LIBS)
|
|
|
|
pip: pip.o error.o rt-utils.o
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LIBS)
|
|
|
|
CLEANUP = $(TARGETS) *.o .depend *.*~ *.orig *.rej rt-tests.spec *.d
|
|
CLEANUP += $(if $(wildcard .git), ChangeLog)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
for F in $(CLEANUP); do find -type f -name $$F | xargs rm -f; done
|
|
rm -f hwlatdetect
|
|
rm -f tags
|
|
|
|
.PHONY: distclean
|
|
distclean: clean
|
|
rm -rf BUILD RPMS SRPMS releases *.tar.gz rt-tests.spec
|
|
|
|
.PHONY: changelog
|
|
changelog:
|
|
git log >ChangeLog
|
|
|
|
.PHONY: install
|
|
install: all
|
|
mkdir -p "$(DESTDIR)$(bindir)" "$(DESTDIR)$(mandir)/man4"
|
|
mkdir -p "$(DESTDIR)$(bindir)" "$(DESTDIR)$(mandir)/man8"
|
|
cp $(TARGETS) "$(DESTDIR)$(bindir)"
|
|
install -m 755 src/hwlatdetect/hwlatdetect.py $(DESTDIR)$(PYLIB)/hwlatdetect.py
|
|
ln -s $(PYLIB)/hwlatdetect.py "$(DESTDIR)$(bindir)/hwlatdetect"
|
|
mkdir -p "$(DESTDIR)$(srcdir)/backfire"
|
|
gzip src/backfire/backfire.4 -c >"$(DESTDIR)$(mandir)/man4/backfire.4.gz"
|
|
gzip src/cyclictest/cyclictest.8 -c >"$(DESTDIR)$(mandir)/man8/cyclictest.8.gz"
|
|
gzip src/pi_tests/pi_stress.8 -c >"$(DESTDIR)$(mandir)/man8/pi_stress.8.gz"
|
|
gzip src/hwlatdetect/hwlatdetect.8 -c >"$(DESTDIR)$(mandir)/man8/hwlatdetect.8.gz"
|
|
gzip src/ptsematest/ptsematest.8 -c >"$(DESTDIR)$(mandir)/man8/ptsematest.8.gz"
|
|
gzip src/sigwaittest/sigwaittest.8 -c >"$(DESTDIR)$(mandir)/man8/sigwaittest.8.gz"
|
|
gzip src/svsematest/svsematest.8 -c >"$(DESTDIR)$(mandir)/man8/svsematest.8.gz"
|
|
gzip src/backfire/sendme.8 -c >"$(DESTDIR)$(mandir)/man8/sendme.8.gz"
|
|
|
|
.PHONY: release
|
|
release: clean changelog
|
|
mkdir -p releases
|
|
rm -rf tmp && mkdir -p tmp/rt-tests
|
|
cp -r Makefile COPYING ChangeLog src tmp/rt-tests
|
|
tar -C tmp -czf rt-tests-$(VERSION_STRING).tar.gz rt-tests
|
|
rm -f ChangeLog
|
|
cp rt-tests-$(VERSION_STRING).tar.gz releases
|
|
|
|
.PHONY: push
|
|
push: release
|
|
scripts/do-git-push $(VERSION_STRING)
|
|
|
|
.PHONY: pushtest
|
|
pushtest: release
|
|
scripts/do-git-push --test $(VERSION_STRING)
|
|
|
|
rt-tests.spec: Makefile rt-tests.spec-in
|
|
sed s/__VERSION__/$(VERSION_STRING)/ <$@-in >$@
|
|
|
|
HERE := $(shell pwd)
|
|
RPMARGS := --define "_topdir $(HERE)" \
|
|
--define "_sourcedir $(HERE)/releases" \
|
|
--define "_builddir $(HERE)/BUILD" \
|
|
|
|
.PHONY: rpm
|
|
rpm: rpmdirs release rt-tests.spec
|
|
rpmbuild -ba $(RPMARGS) rt-tests.spec
|
|
|
|
.PHONY: rpmdirs
|
|
rpmdirs:
|
|
@[ -d BUILD ] || mkdir BUILD
|
|
@[ -d RPMS ] || mkdir RPMS
|
|
@[ -d SRPMS ] || mkdir SRPMS
|
|
|
|
.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 " release : build source tarfile"
|
|
@echo " rpm : build RPM package"
|
|
@echo " clean : remove object files"
|
|
@echo " distclean : remove all generated files"
|
|
@echo " help : print this message"
|
|
|
|
.PHONY: tags
|
|
tags:
|
|
ctags -R --extra=+f --c-kinds=+p *
|