1f08c3bdfSopenharmony_ciVERSION=0.6.3
2f08c3bdfSopenharmony_ci
3f08c3bdfSopenharmony_ci########################################################################
4f08c3bdfSopenharmony_ci# The following variables can be overwritten from the command line
5f08c3bdfSopenharmony_ciOS = linux
6f08c3bdfSopenharmony_ci
7f08c3bdfSopenharmony_ci
8f08c3bdfSopenharmony_ciCC = gcc
9f08c3bdfSopenharmony_ciCXX = g++
10f08c3bdfSopenharmony_ciLD = $(CC)
11f08c3bdfSopenharmony_ciAR = ar
12f08c3bdfSopenharmony_ci
13f08c3bdfSopenharmony_ciCFLAGS ?= -O2 -g
14f08c3bdfSopenharmony_ci
15f08c3bdfSopenharmony_ciDESTDIR ?=
16f08c3bdfSopenharmony_ciPREFIX ?= $(HOME)
17f08c3bdfSopenharmony_ciBINDIR ?= $(PREFIX)/bin
18f08c3bdfSopenharmony_ciMANDIR ?= $(PREFIX)/share/man
19f08c3bdfSopenharmony_ci
20f08c3bdfSopenharmony_ciPKG_CONFIG ?= pkg-config
21f08c3bdfSopenharmony_ci
22f08c3bdfSopenharmony_ciCHECKER_FLAGS ?= -Wno-vla
23f08c3bdfSopenharmony_ci
24f08c3bdfSopenharmony_ci# Allow users to override build settings without dirtying their trees
25f08c3bdfSopenharmony_ci# For debugging, put this in local.mk:
26f08c3bdfSopenharmony_ci#
27f08c3bdfSopenharmony_ci#     CFLAGS += -O0 -DDEBUG -g3 -gdwarf-2
28f08c3bdfSopenharmony_ci#
29f08c3bdfSopenharmony_ciSPARSE_LOCAL_CONFIG ?= local.mk
30f08c3bdfSopenharmony_ci-include ${SPARSE_LOCAL_CONFIG}
31f08c3bdfSopenharmony_ci########################################################################
32f08c3bdfSopenharmony_ci
33f08c3bdfSopenharmony_ci
34f08c3bdfSopenharmony_ciLIB_OBJS :=
35f08c3bdfSopenharmony_ciLIB_OBJS += allocate.o
36f08c3bdfSopenharmony_ciLIB_OBJS += builtin.o
37f08c3bdfSopenharmony_ciLIB_OBJS += char.o
38f08c3bdfSopenharmony_ciLIB_OBJS += compat-$(OS).o
39f08c3bdfSopenharmony_ciLIB_OBJS += cse.o
40f08c3bdfSopenharmony_ciLIB_OBJS += dissect.o
41f08c3bdfSopenharmony_ciLIB_OBJS += dominate.o
42f08c3bdfSopenharmony_ciLIB_OBJS += evaluate.o
43f08c3bdfSopenharmony_ciLIB_OBJS += expand.o
44f08c3bdfSopenharmony_ciLIB_OBJS += expression.o
45f08c3bdfSopenharmony_ciLIB_OBJS += flow.o
46f08c3bdfSopenharmony_ciLIB_OBJS += flowgraph.o
47f08c3bdfSopenharmony_ciLIB_OBJS += inline.o
48f08c3bdfSopenharmony_ciLIB_OBJS += ir.o
49f08c3bdfSopenharmony_ciLIB_OBJS += lib.o
50f08c3bdfSopenharmony_ciLIB_OBJS += linearize.o
51f08c3bdfSopenharmony_ciLIB_OBJS += liveness.o
52f08c3bdfSopenharmony_ciLIB_OBJS += memops.o
53f08c3bdfSopenharmony_ciLIB_OBJS += opcode.o
54f08c3bdfSopenharmony_ciLIB_OBJS += optimize.o
55f08c3bdfSopenharmony_ciLIB_OBJS += options.o
56f08c3bdfSopenharmony_ciLIB_OBJS += parse.o
57f08c3bdfSopenharmony_ciLIB_OBJS += predefine.o
58f08c3bdfSopenharmony_ciLIB_OBJS += pre-process.o
59f08c3bdfSopenharmony_ciLIB_OBJS += ptrlist.o
60f08c3bdfSopenharmony_ciLIB_OBJS += ptrmap.o
61f08c3bdfSopenharmony_ciLIB_OBJS += scope.o
62f08c3bdfSopenharmony_ciLIB_OBJS += show-parse.o
63f08c3bdfSopenharmony_ciLIB_OBJS += simplify.o
64f08c3bdfSopenharmony_ciLIB_OBJS += sort.o
65f08c3bdfSopenharmony_ciLIB_OBJS += ssa.o
66f08c3bdfSopenharmony_ciLIB_OBJS += stats.o
67f08c3bdfSopenharmony_ciLIB_OBJS += storage.o
68f08c3bdfSopenharmony_ciLIB_OBJS += symbol.o
69f08c3bdfSopenharmony_ciLIB_OBJS += target.o
70f08c3bdfSopenharmony_ciLIB_OBJS += target-alpha.o
71f08c3bdfSopenharmony_ciLIB_OBJS += target-arm.o
72f08c3bdfSopenharmony_ciLIB_OBJS += target-arm64.o
73f08c3bdfSopenharmony_ciLIB_OBJS += target-bfin.o
74f08c3bdfSopenharmony_ciLIB_OBJS += target-default.o
75f08c3bdfSopenharmony_ciLIB_OBJS += target-h8300.o
76f08c3bdfSopenharmony_ciLIB_OBJS += target-m68k.o
77f08c3bdfSopenharmony_ciLIB_OBJS += target-microblaze.o
78f08c3bdfSopenharmony_ciLIB_OBJS += target-mips.o
79f08c3bdfSopenharmony_ciLIB_OBJS += target-nds32.o
80f08c3bdfSopenharmony_ciLIB_OBJS += target-nios2.o
81f08c3bdfSopenharmony_ciLIB_OBJS += target-openrisc.o
82f08c3bdfSopenharmony_ciLIB_OBJS += target-ppc.o
83f08c3bdfSopenharmony_ciLIB_OBJS += target-riscv.o
84f08c3bdfSopenharmony_ciLIB_OBJS += target-s390.o
85f08c3bdfSopenharmony_ciLIB_OBJS += target-sh.o
86f08c3bdfSopenharmony_ciLIB_OBJS += target-sparc.o
87f08c3bdfSopenharmony_ciLIB_OBJS += target-x86.o
88f08c3bdfSopenharmony_ciLIB_OBJS += target-xtensa.o
89f08c3bdfSopenharmony_ciLIB_OBJS += tokenize.o
90f08c3bdfSopenharmony_ciLIB_OBJS += unssa.o
91f08c3bdfSopenharmony_ciLIB_OBJS += utils.o
92f08c3bdfSopenharmony_ciLIB_OBJS += version.o
93f08c3bdfSopenharmony_ci
94f08c3bdfSopenharmony_ciPROGRAMS :=
95f08c3bdfSopenharmony_ciPROGRAMS += compile
96f08c3bdfSopenharmony_ciPROGRAMS += ctags
97f08c3bdfSopenharmony_ciPROGRAMS += example
98f08c3bdfSopenharmony_ciPROGRAMS += graph
99f08c3bdfSopenharmony_ciPROGRAMS += obfuscate
100f08c3bdfSopenharmony_ciPROGRAMS += sparse
101f08c3bdfSopenharmony_ciPROGRAMS += test-dissect
102f08c3bdfSopenharmony_ciPROGRAMS += test-lexing
103f08c3bdfSopenharmony_ciPROGRAMS += test-linearize
104f08c3bdfSopenharmony_ciPROGRAMS += test-parsing
105f08c3bdfSopenharmony_ciPROGRAMS += test-show-type
106f08c3bdfSopenharmony_ciPROGRAMS += test-unssa
107f08c3bdfSopenharmony_ci
108f08c3bdfSopenharmony_ciINST_PROGRAMS=sparse cgcc
109f08c3bdfSopenharmony_ciINST_MAN1=sparse.1 cgcc.1
110f08c3bdfSopenharmony_ci
111f08c3bdfSopenharmony_ci
112f08c3bdfSopenharmony_ciall:
113f08c3bdfSopenharmony_ci
114f08c3bdfSopenharmony_ci########################################################################
115f08c3bdfSopenharmony_ci# common flags/options/...
116f08c3bdfSopenharmony_ci
117f08c3bdfSopenharmony_cicflags = -fno-strict-aliasing
118f08c3bdfSopenharmony_cicflags += -Wall -Wwrite-strings
119f08c3bdfSopenharmony_ci
120f08c3bdfSopenharmony_ciGCC_BASE := $(shell $(CC) --print-file-name=)
121f08c3bdfSopenharmony_cicflags += -DGCC_BASE=\"$(GCC_BASE)\"
122f08c3bdfSopenharmony_ci
123f08c3bdfSopenharmony_ciMULTIARCH_TRIPLET := $(shell $(CC) -print-multiarch 2>/dev/null)
124f08c3bdfSopenharmony_cicflags += -DMULTIARCH_TRIPLET=\"$(MULTIARCH_TRIPLET)\"
125f08c3bdfSopenharmony_ci
126f08c3bdfSopenharmony_ci
127f08c3bdfSopenharmony_cibindir := $(DESTDIR)$(BINDIR)
128f08c3bdfSopenharmony_ciman1dir := $(DESTDIR)$(MANDIR)/man1
129f08c3bdfSopenharmony_ci
130f08c3bdfSopenharmony_ci########################################################################
131f08c3bdfSopenharmony_ci# target specificities
132f08c3bdfSopenharmony_ci
133f08c3bdfSopenharmony_cicompile: compile-i386.o
134f08c3bdfSopenharmony_ciEXTRA_OBJS += compile-i386.o
135f08c3bdfSopenharmony_ci
136f08c3bdfSopenharmony_ci# Can we use GCC's generated dependencies?
137f08c3bdfSopenharmony_ciHAVE_GCC_DEP:=$(shell touch .gcc-test.c && 				\
138f08c3bdfSopenharmony_ci		$(CC) -c -Wp,-MP,-MMD,.gcc-test.d .gcc-test.c 2>/dev/null && \
139f08c3bdfSopenharmony_ci		echo 'yes'; rm -f .gcc-test.d .gcc-test.o .gcc-test.c)
140f08c3bdfSopenharmony_ciifeq ($(HAVE_GCC_DEP),yes)
141f08c3bdfSopenharmony_cicflags += -Wp,-MP,-MMD,$(@D)/.$(@F).d
142f08c3bdfSopenharmony_ciendif
143f08c3bdfSopenharmony_ci
144f08c3bdfSopenharmony_ci# Can we use libxml (needed for c2xml)?
145f08c3bdfSopenharmony_ciHAVE_LIBXML:=$(shell $(PKG_CONFIG) --exists libxml-2.0 2>/dev/null && echo 'yes')
146f08c3bdfSopenharmony_ciifeq ($(HAVE_LIBXML),yes)
147f08c3bdfSopenharmony_ciPROGRAMS+=c2xml
148f08c3bdfSopenharmony_ciINST_PROGRAMS+=c2xml
149f08c3bdfSopenharmony_cic2xml-ldlibs := $(shell $(PKG_CONFIG) --libs libxml-2.0)
150f08c3bdfSopenharmony_cic2xml-cflags := $(shell $(PKG_CONFIG) --cflags libxml-2.0)
151f08c3bdfSopenharmony_cielse
152f08c3bdfSopenharmony_ci$(warning Your system does not have libxml, disabling c2xml)
153f08c3bdfSopenharmony_ciendif
154f08c3bdfSopenharmony_ci
155f08c3bdfSopenharmony_ciHAVE_SQLITE := $(shell $(PKG_CONFIG) --exists sqlite3 2>/dev/null && echo 'yes')
156f08c3bdfSopenharmony_ciifeq ($(HAVE_SQLITE),yes)
157f08c3bdfSopenharmony_ciSQLITE_VERSION:=$(shell $(PKG_CONFIG) --modversion sqlite3)
158f08c3bdfSopenharmony_ciSQLITE_VNUMBER:=$(shell printf '%d%02d%02d' $(subst ., ,$(SQLITE_VERSION)))
159f08c3bdfSopenharmony_ciifeq ($(shell expr "$(SQLITE_VNUMBER)" '>=' 32400),1)
160f08c3bdfSopenharmony_ciPROGRAMS += semind
161f08c3bdfSopenharmony_ciINST_PROGRAMS += semind
162f08c3bdfSopenharmony_ciINST_MAN1 += semind.1
163f08c3bdfSopenharmony_cisemind-ldlibs := $(shell $(PKG_CONFIG) --libs sqlite3)
164f08c3bdfSopenharmony_cisemind-cflags := $(shell $(PKG_CONFIG) --cflags sqlite3)
165f08c3bdfSopenharmony_cisemind-cflags += -std=gnu99
166f08c3bdfSopenharmony_cielse
167f08c3bdfSopenharmony_ci$(warning Your SQLite3 version ($(SQLITE_VERSION)) is too old, 3.24.0 or later is required.)
168f08c3bdfSopenharmony_ciendif
169f08c3bdfSopenharmony_cielse
170f08c3bdfSopenharmony_ci$(warning Your system does not have sqlite3, disabling semind)
171f08c3bdfSopenharmony_ciendif
172f08c3bdfSopenharmony_ci
173f08c3bdfSopenharmony_ci# Can we use gtk (needed for test-inspect)
174f08c3bdfSopenharmony_ciGTK_VERSION:=3.0
175f08c3bdfSopenharmony_ciHAVE_GTK:=$(shell $(PKG_CONFIG) --exists gtk+-$(GTK_VERSION) 2>/dev/null && echo 'yes')
176f08c3bdfSopenharmony_ciifneq ($(HAVE_GTK),yes)
177f08c3bdfSopenharmony_ciGTK_VERSION:=2.0
178f08c3bdfSopenharmony_ciHAVE_GTK:=$(shell $(PKG_CONFIG) --exists gtk+-$(GTK_VERSION) 2>/dev/null && echo 'yes')
179f08c3bdfSopenharmony_ciendif
180f08c3bdfSopenharmony_ciifeq ($(HAVE_GTK),yes)
181f08c3bdfSopenharmony_ciGTK_CFLAGS := $(shell $(PKG_CONFIG) --cflags gtk+-$(GTK_VERSION))
182f08c3bdfSopenharmony_ciast-view-cflags := $(GTK_CFLAGS)
183f08c3bdfSopenharmony_ciast-model-cflags := $(GTK_CFLAGS)
184f08c3bdfSopenharmony_ciast-inspect-cflags := $(GTK_CFLAGS)
185f08c3bdfSopenharmony_citest-inspect-cflags := $(GTK_CFLAGS)
186f08c3bdfSopenharmony_citest-inspect-ldlibs := $(shell $(PKG_CONFIG) --libs gtk+-$(GTK_VERSION))
187f08c3bdfSopenharmony_citest-inspect: ast-model.o ast-view.o ast-inspect.o
188f08c3bdfSopenharmony_ciEXTRA_OBJS += ast-model.o ast-view.o ast-inspect.o
189f08c3bdfSopenharmony_ciPROGRAMS += test-inspect
190f08c3bdfSopenharmony_ciINST_PROGRAMS += test-inspect
191f08c3bdfSopenharmony_cielse
192f08c3bdfSopenharmony_ci$(warning Your system does not have gtk3/gtk2, disabling test-inspect)
193f08c3bdfSopenharmony_ciendif
194f08c3bdfSopenharmony_ci
195f08c3bdfSopenharmony_ci# Can we use LLVM (needed for ... sparse-llvm)?
196f08c3bdfSopenharmony_ciLLVM_CONFIG:=llvm-config
197f08c3bdfSopenharmony_ciHAVE_LLVM:=$(shell $(LLVM_CONFIG) --version >/dev/null 2>&1 && echo 'yes')
198f08c3bdfSopenharmony_ciifeq ($(HAVE_LLVM),yes)
199f08c3bdfSopenharmony_ciarch := $(shell uname -m)
200f08c3bdfSopenharmony_ciifeq (${MULTIARCH_TRIPLET},x86_64-linux-gnux32)
201f08c3bdfSopenharmony_ciarch := x32
202f08c3bdfSopenharmony_ciendif
203f08c3bdfSopenharmony_ciifneq ($(filter ${arch},i386 i486 i586 i686 x86_64 amd64),)
204f08c3bdfSopenharmony_ciLLVM_VERSION:=$(shell $(LLVM_CONFIG) --version)
205f08c3bdfSopenharmony_ciLLVM_VERSION_MAJOR:=$(firstword $(subst ., ,$(LLVM_VERSION)))
206f08c3bdfSopenharmony_ciifeq ($(shell expr "$(LLVM_VERSION_MAJOR)" '>=' 3),1)
207f08c3bdfSopenharmony_ciLLVM_PROGS := sparse-llvm
208f08c3bdfSopenharmony_ci$(LLVM_PROGS): LD := $(CXX)
209f08c3bdfSopenharmony_ciLLVM_LDFLAGS := $(shell $(LLVM_CONFIG) --ldflags)
210f08c3bdfSopenharmony_ciLLVM_CFLAGS := $(shell $(LLVM_CONFIG) --cppflags)
211f08c3bdfSopenharmony_ciLLVM_LIBS := $(shell $(LLVM_CONFIG) --libs)
212f08c3bdfSopenharmony_ciLLVM_LIBS += $(shell $(LLVM_CONFIG) --system-libs 2>/dev/null)
213f08c3bdfSopenharmony_ciLLVM_LIBS += $(shell $(LLVM_CONFIG) --cxxflags | grep -F -q -e '-stdlib=libc++' && echo -lc++)
214f08c3bdfSopenharmony_ciPROGRAMS += $(LLVM_PROGS)
215f08c3bdfSopenharmony_ciINST_PROGRAMS += sparse-llvm sparsec
216f08c3bdfSopenharmony_cisparse-llvm-cflags := $(LLVM_CFLAGS)
217f08c3bdfSopenharmony_cisparse-llvm-ldflags := $(LLVM_LDFLAGS)
218f08c3bdfSopenharmony_cisparse-llvm-ldlibs := $(LLVM_LIBS)
219f08c3bdfSopenharmony_cielse
220f08c3bdfSopenharmony_ci$(warning LLVM 3.0 or later required. Your system has version $(LLVM_VERSION) installed.)
221f08c3bdfSopenharmony_ciendif
222f08c3bdfSopenharmony_cielse
223f08c3bdfSopenharmony_ci$(warning sparse-llvm disabled on ${arch})
224f08c3bdfSopenharmony_ciendif
225f08c3bdfSopenharmony_cielse
226f08c3bdfSopenharmony_ci$(warning Your system does not have llvm, disabling sparse-llvm)
227f08c3bdfSopenharmony_ciendif
228f08c3bdfSopenharmony_ci
229f08c3bdfSopenharmony_ciifeq ($(HAVE_BOOLECTOR),yes)
230f08c3bdfSopenharmony_ciPROGRAMS += scheck
231f08c3bdfSopenharmony_cischeck-cflags  := -I${BOOLECTORDIR}/include/boolector
232f08c3bdfSopenharmony_cischeck-ldflags := -L${BOOLECTORDIR}/lib
233f08c3bdfSopenharmony_cischeck-ldlibs  := -lboolector -llgl -lbtor2parser
234f08c3bdfSopenharmony_ciendif
235f08c3bdfSopenharmony_ci
236f08c3bdfSopenharmony_ci########################################################################
237f08c3bdfSopenharmony_ciLIBS := libsparse.a
238f08c3bdfSopenharmony_ciOBJS := $(LIB_OBJS) $(EXTRA_OBJS) $(PROGRAMS:%=%.o)
239f08c3bdfSopenharmony_ci
240f08c3bdfSopenharmony_ci# Pretty print
241f08c3bdfSopenharmony_ciV := @
242f08c3bdfSopenharmony_ciQ := $(V:1=)
243f08c3bdfSopenharmony_ci
244f08c3bdfSopenharmony_ci########################################################################
245f08c3bdfSopenharmony_ciall: $(PROGRAMS)
246f08c3bdfSopenharmony_ci
247f08c3bdfSopenharmony_cildflags += $($(@)-ldflags) $(LDFLAGS)
248f08c3bdfSopenharmony_cildlibs  += $($(@)-ldlibs)  $(LDLIBS)
249f08c3bdfSopenharmony_ci$(PROGRAMS): % : %.o $(LIBS)
250f08c3bdfSopenharmony_ci	@echo "  LD      $@"
251f08c3bdfSopenharmony_ci	$(Q)$(LD) $(ldflags) $^ $(ldlibs) -o $@
252f08c3bdfSopenharmony_ci
253f08c3bdfSopenharmony_cilibsparse.a: $(LIB_OBJS)
254f08c3bdfSopenharmony_ci	@echo "  AR      $@"
255f08c3bdfSopenharmony_ci	$(Q)$(AR) rcs $@ $^
256f08c3bdfSopenharmony_ci
257f08c3bdfSopenharmony_ci
258f08c3bdfSopenharmony_cicflags   += $($(*)-cflags) $(CPPFLAGS) $(CFLAGS)
259f08c3bdfSopenharmony_ci%.o: %.c
260f08c3bdfSopenharmony_ci	@echo "  CC      $@"
261f08c3bdfSopenharmony_ci	$(Q)$(CC) $(cflags) -c -o $@ $<
262f08c3bdfSopenharmony_ci
263f08c3bdfSopenharmony_ci%.sc: %.c sparse
264f08c3bdfSopenharmony_ci	@echo "  CHECK   $<"
265f08c3bdfSopenharmony_ci	$(Q)CHECK=./sparse ./cgcc -no-compile $(CHECKER_FLAGS) $(cflags) -c $<
266f08c3bdfSopenharmony_ci
267f08c3bdfSopenharmony_ciselfcheck: $(OBJS:.o=.sc)
268f08c3bdfSopenharmony_ci
269f08c3bdfSopenharmony_ciSPARSE_VERSION:=$(shell git describe --dirty 2>/dev/null || echo '$(VERSION)')
270f08c3bdfSopenharmony_civersion.o: version.h
271f08c3bdfSopenharmony_civersion.h: FORCE
272f08c3bdfSopenharmony_ci	@echo '#define SPARSE_VERSION "$(SPARSE_VERSION)"' > version.h.tmp
273f08c3bdfSopenharmony_ci	@if cmp -s version.h version.h.tmp; then \
274f08c3bdfSopenharmony_ci		rm version.h.tmp; \
275f08c3bdfSopenharmony_ci	else \
276f08c3bdfSopenharmony_ci		echo "  GEN     $@"; \
277f08c3bdfSopenharmony_ci		mv version.h.tmp version.h; \
278f08c3bdfSopenharmony_ci	fi
279f08c3bdfSopenharmony_ci
280f08c3bdfSopenharmony_ci
281f08c3bdfSopenharmony_cicheck: all
282f08c3bdfSopenharmony_ci	$(Q)cd validation && ./test-suite
283f08c3bdfSopenharmony_civalidation/%: $(PROGRAMS) FORCE
284f08c3bdfSopenharmony_ci	$(Q)validation/test-suite $*
285f08c3bdfSopenharmony_ci
286f08c3bdfSopenharmony_ci
287f08c3bdfSopenharmony_ciclean: clean-check
288f08c3bdfSopenharmony_ci	@rm -f *.[oa] .*.d $(PROGRAMS) version.h
289f08c3bdfSopenharmony_ciclean-check:
290f08c3bdfSopenharmony_ci	@echo "  CLEAN"
291f08c3bdfSopenharmony_ci	@find validation/ \( -name "*.c.output.*" \
292f08c3bdfSopenharmony_ci			  -o -name "*.c.error.*" \
293f08c3bdfSopenharmony_ci			  -o -name "*.o" \
294f08c3bdfSopenharmony_ci	                  \) -exec rm {} \;
295f08c3bdfSopenharmony_ci
296f08c3bdfSopenharmony_ci
297f08c3bdfSopenharmony_ciinstall: install-bin install-man
298f08c3bdfSopenharmony_ciinstall-bin: $(INST_PROGRAMS:%=$(bindir)/%)
299f08c3bdfSopenharmony_ciinstall-man: $(INST_MAN1:%=$(man1dir)/%)
300f08c3bdfSopenharmony_ci
301f08c3bdfSopenharmony_ci$(bindir)/%: %
302f08c3bdfSopenharmony_ci	@echo "  INSTALL $@"
303f08c3bdfSopenharmony_ci	$(Q)install -D        $< $@ || exit 1;
304f08c3bdfSopenharmony_ci$(man1dir)/%: %
305f08c3bdfSopenharmony_ci	@echo "  INSTALL $@"
306f08c3bdfSopenharmony_ci	$(Q)install -D -m 644 $< $@ || exit 1;
307f08c3bdfSopenharmony_ci
308f08c3bdfSopenharmony_ci.PHONY: FORCE
309f08c3bdfSopenharmony_ci
310f08c3bdfSopenharmony_ci# GCC's dependencies
311f08c3bdfSopenharmony_ci-include $(OBJS:%.o=.%.o.d)
312