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