# 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

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
