aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile.include
blob: d01b7d13c7b72e7ce309132e09ed1569e760df1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

ifneq ($(OUTPUT),)
$(if $(shell [ -d "$(OUTPUT)" -a -x "$(OUTPUT)" ] && echo 1),, \
  $(error output directory "$(OUTPUT)" does not exist))
endif

LLVM_VERSION ?=
CLANG        ?= clang$(LLVM_VERSION)
LLVM_CONFIG  ?= llvm-config$(LLVM_VERSION)
LLVM_STRIP   ?= llvm-strip$(LLVM_VERSION)

ifneq ($(LLVM),)
  $(if $(findstring default,$(origin AR)),$(eval AR := llvm-ar$(LLVM_VERSION)))
  $(if $(findstring default,$(origin CC)),$(eval CC := clang$(LLVM_VERSION)))
  $(if $(findstring default,$(origin LD)),$(eval LD := ld.lld$(LLVM_VERSION)))
  HOSTAR ?= llvm-ar
  HOSTCC ?= clang
  HOSTLD ?= ld.lld
else
  $(if $(findstring default,$(origin AR)),$(eval AR = $(CROSS_COMPILE)$(AR)))
  $(if $(findstring default,$(origin CC)),$(eval CC = $(CROSS_COMPILE)$(CC)))
  $(if $(findstring default,$(origin LD)),$(eval LD = $(CROSS_COMPILE)$(LD)))
  HOSTAR ?= ar
  HOSTCC ?= gcc
  HOSTLD ?= ld
endif

EXTRA_WARNINGS := \
	-Wbad-function-cast \
	-Wdeclaration-after-statement \
	-Wformat-security \
	-Wformat-y2k \
	-Winit-self \
	-Wmissing-declarations \
	-Wmissing-prototypes \
	-Wold-style-definition \
	-Wpacked \
	-Wredundant-decls \
	-Wshadow \
	-Wstrict-prototypes \
	-Wswitch-default \
	-Wundef \
	-Wwrite-strings \

ifeq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),)
  ifneq ($(V),1)

    define def_quiet_msg
      $(eval QUIET_$(1) = @printf '  %-9s%s\n' $(1) $$@;)
    endef
    $(foreach action,CC CLANG LINK MKDIR GEN,$(call def_quiet_msg,$(action)))

    define def_quiet_msg_subdir
      $(eval QUIET_$(1) = @printf '  %-9s%s\n' $(1) $$1;)
    endef
    $(foreach action,CLEAN INSTALL UNINST,$(call def_quiet_msg_subdir,$(action)))

    define descend
      @printf '  DESCEND  %s\n' $(1); mkdir -p $(OUTPUT)$(1) && \
        $(MAKE) --no-print-directory -C $(1) $(2)
    endef

  endif
endif