File: Test.mk

package info (click to toggle)
zmk 0.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 1,132 kB
  • sloc: makefile: 1,749; sh: 313; ansic: 42; awk: 12; cpp: 12
file content (162 lines) | stat: -rw-r--r-- 9,201 bytes parent folder | download
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#!/usr/bin/make -f
# This file is a part of zmk test system.
include zmk/internalTest.mk

t:: all all-sysroot install uninstall clean

$(eval $(ZMK.isolateHostToolchain))
# MacOS uses c++, GNU uses g++ by default.
# Pick one for test consistency.
%.log: ZMK.makeOverrides += CXX=c++
# Some logs behave as if a sysroot was requested.
%-sysroot.log: ZMK.makeOverrides += Toolchain.SysRoot=/path
# Test depends on source files
%.log: main.c main.cc main.cpp main.cxx main.m src/main.c

all: all.log
	# C/C++/ObjC programs can be built.
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog1-main.d) -c -o prog1-main.o $(ZMK.test.OutOfTreeSourcePath)main.c' <$<
	GREP -qFx 'cc -o prog1 prog1-main.o' <$<
	GREP -qFx 'c++ -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog2-main.d) -c -o prog2-main.o $(ZMK.test.OutOfTreeSourcePath)main.cpp' <$<
	GREP -qFx 'c++ -o prog2 prog2-main.o' <$<
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog3-main.d) -c -o prog3-main.o $(ZMK.test.OutOfTreeSourcePath)main.m' <$<
	GREP -qFx 'cc -o prog3 prog3-main.o -lobjc' <$<
	GREP -qFx 'c++ -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog4-main.d) -c -o prog4-main.o $(ZMK.test.OutOfTreeSourcePath)main.cxx' <$<
	GREP -qFx 'c++ -o prog4 prog4-main.o' <$<
	GREP -qFx 'c++ -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog5-main.d) -c -o prog5-main.o $(ZMK.test.OutOfTreeSourcePath)main.cc' <$<
	GREP -qFx 'c++ -o prog5 prog5-main.o' <$<
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF src/prog6-main.d) -c -o src/prog6-main.o $(ZMK.test.OutOfTreeSourcePath)src/main.c' <$<
	GREP -qFx 'cc -o prog6 src/prog6-main.o' <$<
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF subdir/prog7-main.d) -c -o subdir/prog7-main.o $(ZMK.test.OutOfTreeSourcePath)main.c' <$<
	GREP -qFx 'cc -o subdir/prog7 subdir/prog7-main.o' <$<
all-sysroot: all-sysroot.log
	# C/C++/ObjC programs can be built against the configured sysroot.
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog1-main.d) -c --sysroot=/path -o prog1-main.o $(ZMK.test.OutOfTreeSourcePath)main.c' <$<
	GREP -qFx 'cc --sysroot=/path -o prog1 prog1-main.o' <$<
	GREP -qFx 'c++ -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog2-main.d) -c --sysroot=/path -o prog2-main.o $(ZMK.test.OutOfTreeSourcePath)main.cpp' <$<
	GREP -qFx 'c++ --sysroot=/path -o prog2 prog2-main.o' <$<
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog3-main.d) -c --sysroot=/path -o prog3-main.o $(ZMK.test.OutOfTreeSourcePath)main.m' <$<
	GREP -qFx 'cc --sysroot=/path -o prog3 prog3-main.o -lobjc' <$<
	GREP -qFx 'c++ -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog4-main.d) -c --sysroot=/path -o prog4-main.o $(ZMK.test.OutOfTreeSourcePath)main.cxx' <$<
	GREP -qFx 'c++ --sysroot=/path -o prog4 prog4-main.o' <$<
	GREP -qFx 'c++ -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog5-main.d) -c --sysroot=/path -o prog5-main.o $(ZMK.test.OutOfTreeSourcePath)main.cc' <$<
	GREP -qFx 'c++ --sysroot=/path -o prog5 prog5-main.o' <$<
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF src/prog6-main.d) -c --sysroot=/path -o src/prog6-main.o $(ZMK.test.OutOfTreeSourcePath)src/main.c' <$<
	GREP -qFx 'cc --sysroot=/path -o prog6 src/prog6-main.o' <$<
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF subdir/prog7-main.d) -c --sysroot=/path -o subdir/prog7-main.o $(ZMK.test.OutOfTreeSourcePath)main.c' <$<
	GREP -qFx 'cc --sysroot=/path -o subdir/prog7 subdir/prog7-main.o' <$<
install: install.log
	# C/C++/ObjC programs can be installed.
	GREP -qFx 'install -d /usr/local/bin' <$<
	GREP -qFx 'install -m 0755 prog1 /usr/local/bin/prog1' <$<
	GREP -qFx 'install -m 0755 prog2 /usr/local/bin/prog2' <$<
	GREP -qFx 'install -m 0755 prog3 /usr/local/bin/prog3' <$<
	GREP -qFx 'install -m 0755 prog4 /usr/local/bin/prog4' <$<
	GREP -qFx 'install -m 0755 prog5 /usr/local/bin/prog5' <$<
	GREP -qFx 'install -m 0755 prog6 /usr/local/bin/prog6' <$<
	GREP -qFx 'install -m 0755 subdir/prog7 /usr/local/bin/prog7' <$<
uninstall: uninstall.log
	# C/C++/ObjC programs can be uninstalled.
	GREP -qFx 'rm -f /usr/local/bin/prog1' <$<
	GREP -qFx 'rm -f /usr/local/bin/prog2' <$<
	GREP -qFx 'rm -f /usr/local/bin/prog3' <$<
	GREP -qFx 'rm -f /usr/local/bin/prog4' <$<
	GREP -qFx 'rm -f /usr/local/bin/prog5' <$<
	GREP -qFx 'rm -f /usr/local/bin/prog6' <$<
	GREP -qFx 'rm -f /usr/local/bin/prog7' <$<
clean: clean.log
	# C/C++/ObjC programs can be cleaned.
	GREP -qFx 'rm -f ./prog1-main.o'  <$<
	GREP -qFx 'rm -f ./prog1-main.d'  <$<
	GREP -qFx 'rm -f prog1' <$<
	GREP -qFx 'rm -f ./prog2-main.o'  <$<
	GREP -qFx 'rm -f ./prog2-main.d'  <$<
	GREP -qFx 'rm -f prog2' <$<
	GREP -qFx 'rm -f ./prog3-main.o'  <$<
	GREP -qFx 'rm -f ./prog3-main.d'  <$<
	GREP -qFx 'rm -f prog3' <$<
	GREP -qFx 'rm -f ./prog4-main.o'  <$<
	GREP -qFx 'rm -f ./prog4-main.d'  <$<
	GREP -qFx 'rm -f prog4' <$<
	GREP -qFx 'rm -f ./prog5-main.o'  <$<
	GREP -qFx 'rm -f ./prog5-main.d'  <$<
	GREP -qFx 'rm -f prog5' <$<
	GREP -qFx 'rm -f src/prog6-main.o'  <$<
	GREP -qFx 'rm -f src/prog6-main.d'  <$<
	GREP -qFx 'rm -f prog6' <$<
	GREP -qFx 'rm -f subdir/prog7' <$<


t:: all-exe
all-exe.log: ZMK.makeOverrides += exe=.exe
all-exe: all-exe.log
	# C/C++ programs respect the .exe suffix (during building)
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog1-main.d) -c -o prog1-main.o $(ZMK.test.OutOfTreeSourcePath)main.c' <$<
	GREP -qFx 'cc -o prog1.exe prog1-main.o' <$<
	GREP -qFx 'c++ -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog2-main.d) -c -o prog2-main.o $(ZMK.test.OutOfTreeSourcePath)main.cpp' <$<
	GREP -qFx 'c++ -o prog2.exe prog2-main.o' <$<


t:: install-custom-install-name
install-custom-install-name.log: ZMK.makeOverrides += prog1.InstallName=Prog1 subdir/prog7.InstallName=Prog7
install-custom-install-name: install-custom-install-name.log
	# Program can have a custom InstallName
	GREP -qFx 'install -d /usr/local/bin' <$<
	GREP -qFx 'install -m 0755 prog1 /usr/local/bin/Prog1' <$<
	GREP -qFx 'install -m 0755 subdir/prog7 /usr/local/bin/Prog7' <$<

t:: install-custom-install-mode
install-custom-install-mode.log: ZMK.makeOverrides += prog1.InstallMode=0700
install-custom-install-mode: install-custom-install-mode.log
	# Program can have a custom InstallMode
	GREP -qFx 'install -m 0700 prog1 /usr/local/bin/prog1' <$<

t:: install-custom-install-dir
install-custom-install-dir.log: ZMK.makeOverrides += prog1.InstallDir=/usr/local/sbin subdir/prog7.InstallDir=/usr/local/sbin
install-custom-install-dir: install-custom-install-dir.log
	# Program can have a custom InstallDir
	GREP -qFx 'install -m 0755 prog1 /usr/local/sbin/prog1' <$<
	GREP -qFx 'install -m 0755 subdir/prog7 /usr/local/sbin/prog7' <$<

t:: install-custom-deep-install-dir
install-custom-deep-install-dir.log: ZMK.makeOverrides += prog1.InstallDir=/usr/local/lib/custom/bin subdir/prog7.InstallDir=/usr/local/lib/custom/bin
install-custom-deep-install-dir: install-custom-deep-install-dir.log
	# Program with nested directories in InstallDir creates each directory.
	GREP -qFx 'install -d /usr/local/lib' <$<
	GREP -qFx 'install -d /usr/local/lib/custom' <$<
	GREP -qFx 'install -d /usr/local/lib/custom/bin' <$<
	GREP -qFx 'install -m 0755 prog1 /usr/local/lib/custom/bin/prog1' <$<
	GREP -qFx 'install -m 0755 subdir/prog7 /usr/local/lib/custom/bin/prog7' <$<

t:: install-program-prefix
install-program-prefix.log: ZMK.makeOverrides += Configure.ProgramPrefix=prefix-
install-program-prefix: install-program-prefix.log
	# Configured program prefix is used during the install phase.
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog1-main.d) -c -o prog1-main.o $(ZMK.test.OutOfTreeSourcePath)main.c' <$<
	GREP -qFx 'cc -o prog1 prog1-main.o' <$<
	GREP -qFx 'install -m 0755 prog1 /usr/local/bin/prefix-prog1' <$<
	GREP -qFx 'install -m 0755 subdir/prog7 /usr/local/bin/prefix-prog7' <$<

t:: install-program-suffix
install-program-suffix.log: ZMK.makeOverrides += Configure.ProgramSuffix=-suffix
install-program-suffix: install-program-suffix.log
	# Configured program suffix is used during the install phase.
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog1-main.d) -c -o prog1-main.o $(ZMK.test.OutOfTreeSourcePath)main.c' <$<
	GREP -qFx 'cc -o prog1 prog1-main.o' <$<
	GREP -qFx 'install -m 0755 prog1 /usr/local/bin/prog1-suffix' <$<
	GREP -qFx 'install -m 0755 subdir/prog7 /usr/local/bin/prog7-suffix' <$<

t:: install-program-transform-name
install-program-transform-name.log: ZMK.makeOverrides += Configure.ProgramTransformName='s/prog\([1-9]\)/potato\1/g'
install-program-transform-name: install-program-transform-name.log
	# Configured program transform expression is applied during the install phase.
	GREP -qFx 'cc -MMD$(if $(ZMK.test.IsOutOfTreeBuild), -MF prog1-main.d) -c -o prog1-main.o $(ZMK.test.OutOfTreeSourcePath)main.c' <$<
	GREP -qFx 'cc -o prog1 prog1-main.o' <$<
	GREP -qFx 'install -m 0755 prog1 /usr/local/bin/potato1' <$<
	GREP -qFx 'install -m 0755 subdir/prog7 /usr/local/bin/potato7' <$<

t:: install-exe
install-exe.log: ZMK.makeOverrides += exe=.exe
install-exe: install-exe.log
	# C/C++ programs respect the .exe suffix (during installation)
	GREP -qFx 'install -m 0755 prog1.exe /usr/local/bin/prog1.exe' <$<