forked from GrassLab/osc2021
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.include
58 lines (45 loc) · 1.28 KB
/
Makefile.include
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
# use pushd from bash
SHELL := /bin/bash
CROSS_COMPILE ?= aarch64-linux-gnu-
ARCH := $(shell uname -m)
ifeq ($(ARCH), arm64)
undefine CROSS_COMPILE
endif
ifeq ($(ARCH), aarch64)
undefine CROSS_COMPILE
endif
ifdef VERBOSE
quiet =
else
quiet = quiet_
endif
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
OBJCOPY := $(CROSS_COMPILE)objcopy
# escape single quote
squote := "'"
escsq = $(subst $(squote),'\$(squote)',$1)
# echo command
# if $(quiet) equals `quiet_', short version is used, otherwise full one
echo-cmd = $(if $($(quiet)cmd_$(1)), \
echo ' $(call escsq,$($(quiet)cmd_$(1)))';)
# default sink stdout
redirect :=
quiet_redirect := exec 2>/dev/null 1>/dev/null;
# printing commands
cmd = @set -e; $(echo-cmd) $($(quiet)redirect) $(cmd_$(1)); \
echo 'cmd_$@ := $(cmd_$(1))' > $(@D)/.$(@F).cmd
# general command functions
quiet_cmd_mkdir = MKDIR $(dir $@)
cmd_mkdir = mkdir -p $(dir $@)
rule_mkdir = $(if $(wildcard $(dir $@)),,@$(call echo-cmd,mkdir) $(cmd_mkdir))
quiet_cmd_objcopy = OBJCOPY $@
cmd_objcopy = $(OBJCOPY) -S -O binary $^ $@
# arg: ldflag
quiet_cmd_ld = LD $@
cmd_ld = $(LD) $2 $^ -o $@
# arg: cflag
quiet_cmd_cc = CC $@
cmd_cc = $(CC) -c $2 -o $@ $<
quiet_cmd_clean = CLEAN $2
cmd_clean = rm -rf $2