| # SPDX-License-Identifier: GPL-2.0-only | |
| define allow-override | |
| $(if $(or $(findstring environment,$(origin $(1))),\ | |
| $(findstring command line,$(origin $(1)))),,\ | |
| $(eval $(1) = $(2))) | |
| endef | |
| # Allow setting CC and AR, or setting CROSS_COMPILE as a prefix. | |
| $(call allow-override,CC,$(CROSS_COMPILE)gcc) | |
| $(call allow-override,AR,$(CROSS_COMPILE)ar) | |
| $(call allow-override,STRIP,$(CROSS_COMPILE)strip) | |
| $(call allow-override,PKG_CONFIG,pkg-config) | |
| $(call allow-override,LD_SO_CONF_PATH,/etc/ld.so.conf.d/) | |
| $(call allow-override,LDCONFIG,ldconfig) | |
| export CC AR STRIP PKG_CONFIG LD_SO_CONF_PATH LDCONFIG | |
| FOPTS := -flto=auto -ffat-lto-objects -fexceptions -fstack-protector-strong \ | |
| -fasynchronous-unwind-tables -fstack-clash-protection | |
| WOPTS := -O -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 \ | |
| -Wp,-D_GLIBCXX_ASSERTIONS -Wno-maybe-uninitialized | |
| ifeq ($(CC),clang) | |
| FOPTS := $(filter-out -flto=auto -ffat-lto-objects, $(FOPTS)) | |
| WOPTS := $(filter-out -Wno-maybe-uninitialized, $(WOPTS)) | |
| endif | |
| CFLAGS := -g -DVERSION=\"$(VERSION)\" $(FOPTS) $(WOPTS) $(CFLAGS) | |
| LDFLAGS := -ggdb $(LDFLAGS) | |
| RM := rm -rf | |
| LN := ln -s | |
| INSTALL := install | |
| MKDIR := mkdir | |
| STRIP := strip | |
| BINDIR := /usr/bin | |
| CTAGS := ctags | |
| ETAGS := ctags -e | |
| .PHONY: install | |
| install: doc_install | |
| @$(MKDIR) -p $(DESTDIR)$(BINDIR) | |
| $(call QUIET_INSTALL,rtla)$(INSTALL) $(RTLA) -m 755 $(DESTDIR)$(BINDIR) | |
| @$(STRIP) $(DESTDIR)$(BINDIR)/rtla | |
| @test ! -f $(DESTDIR)$(BINDIR)/osnoise || $(RM) $(DESTDIR)$(BINDIR)/osnoise | |
| @$(LN) rtla $(DESTDIR)$(BINDIR)/osnoise | |
| @test ! -f $(DESTDIR)$(BINDIR)/hwnoise || $(RM) $(DESTDIR)$(BINDIR)/hwnoise | |
| @$(LN) -s rtla $(DESTDIR)$(BINDIR)/hwnoise | |
| @test ! -f $(DESTDIR)$(BINDIR)/timerlat || $(RM) $(DESTDIR)$(BINDIR)/timerlat | |
| @$(LN) -s rtla $(DESTDIR)$(BINDIR)/timerlat | |
| .PHONY: tags | |
| tags: | |
| $(CTAGS) -R --extras=+f --c-kinds=+p src | |
| .PHONY: TAGS | |
| TAGS: | |
| $(ETAGS) -R --extras=+f --c-kinds=+p src | |
| .PHONY: tags_clean | |
| tags_clean: | |
| $(RM) tags TAGS | |
| .PHONY: doc doc_clean doc_install | |
| doc: | |
| $(MAKE) -C $(DOCSRC) | |
| doc_clean: | |
| $(MAKE) -C $(DOCSRC) clean | |
| doc_install: | |
| $(MAKE) -C $(DOCSRC) install | |
| # This section is necessary to make the rtla tarball | |
| NAME := rtla | |
| DIRS := src | |
| FILES := Makefile README.txt | |
| CEXT := bz2 | |
| TARBALL := $(NAME)-$(VERSION).tar.$(CEXT) | |
| TAROPTS := -cvjf $(TARBALL) | |
| SRCTREE := $(or $(BUILD_SRC),$(CURDIR)) | |
| tarball: clean | |
| $(RM) $(NAME)-$(VERSION) && $(MKDIR) $(NAME)-$(VERSION) | |
| echo $(VERSION) > $(NAME)-$(VERSION)/VERSION | |
| cp -r $(DIRS) $(FILES) $(NAME)-$(VERSION) | |
| $(MKDIR) $(NAME)-$(VERSION)/Documentation/ | |
| cp -rp $(SRCTREE)/../../../Documentation/tools/$(NAME)/* $(NAME)-$(VERSION)/Documentation/ | |
| cp Makefile.standalone $(NAME)-$(VERSION)/Makefile | |
| cp Makefile.$(NAME) $(NAME)-$(VERSION)/ | |
| tar $(TAROPTS) --exclude='*~' $(NAME)-$(VERSION) | |
| $(RM) $(NAME)-$(VERSION) | |
| .PHONY: tarball |