github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/Makefile (about) 1 # Copyright 2017 syzkaller project authors. All rights reserved. 2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 # There are 3 OS/arch pairs: 5 # - HOSTOS/HOSTARCH: pair where syz-manager will run. 6 # - TARGETOS/TARGETVMARCH: pair of the target OS under test. 7 # - TARGETOS/TARGETARCH: pair of the target test process. 8 # 9 # The last 2 differ for e.g. amd64 OS and 386 test processes (compat syscall testing). 10 # All pairs default to the current machine. All but BUILD can be overriden. 11 # 12 # For example, to test linux/amd64 on linux/amd64, you just run: 13 # make 14 # To test linux/arm64 from darwin/amd64 host, run: 15 # make HOSTOS=darwin HOSTARCH=amd64 TARGETOS=linux TARGETARCH=arm64 16 # To test x86 compat syscalls, run: 17 # make TARGETVMARCH=amd64 TARGETARCH=386 18 # 19 # There is one special case for extracting constants for Android 20 # (you don't need this unless you update system call descriptions): 21 # make extract TARGETOS=android SOURCEDIR=/path/to/android/checkout 22 23 define newline 24 25 26 endef 27 28 RED := $(shell tput setaf 1) 29 RESET := $(shell tput sgr0) 30 ifndef SYZ_ENV 31 $(warning $(RED)run command via tools/syz-env for best compatibility, see:$(RESET)) 32 $(warning $(RED)https://github.com/google/syzkaller/blob/master/docs/contributing.md#using-syz-env$(RESET)) 33 endif 34 35 GITREV=$(shell git rev-parse HEAD) 36 ifeq ("$(shell git diff --shortstat)", "") 37 REV=$(GITREV) 38 else 39 REV=$(GITREV)+ 40 endif 41 GITREVDATE=$(shell git log -n 1 --format="%cd" --date=format:%Y%m%d-%H%M%S) 42 43 # Don't generate symbol table and DWARF debug info. 44 # Reduces build time and binary sizes considerably. 45 # That's only needed if you use gdb or nm. 46 # If you need that, build manually with DEBUG=true env. 47 GLFLAGS := 48 GGFLAGS := 49 ifeq ("$(DEBUG)", "true") 50 GGFLAGS := -gcflags="all=-N -l" 51 else 52 GLFLAGS := -s -w 53 endif 54 GOFLAGS := -ldflags="$(GLFLAGS) -X github.com/google/syzkaller/prog.GitRevision=$(REV) -X github.com/google/syzkaller/prog.gitRevisionDate=$(GITREVDATE)" $(GGFLAGS) 55 ifneq ("$(GOTAGS)", "") 56 GOFLAGS += " -tags=$(GOTAGS)" 57 endif 58 59 GOHOSTFLAGS ?= $(GOFLAGS) 60 GOTARGETFLAGS ?= $(GOFLAGS) 61 62 ENV := $(subst \n,$(newline),$(shell CI=$(CI)\ 63 SOURCEDIR=$(SOURCEDIR) HOSTOS=$(HOSTOS) HOSTARCH=$(HOSTARCH) \ 64 TARGETOS=$(TARGETOS) TARGETARCH=$(TARGETARCH) TARGETVMARCH=$(TARGETVMARCH) \ 65 SYZ_CLANG=$(SYZ_CLANG) \ 66 go run $(GOHOSTFLAGS) tools/syz-make/make.go)) 67 # Uncomment in case of emergency. 68 # $(info $(ENV)) 69 $(eval $(ENV)) 70 ifneq ("$(SYZERROR)", "") 71 $(error $(SYZERROR)) 72 endif 73 ifeq ("$(NCORES)", "") 74 $(error syz-make failed) 75 endif 76 ifeq ("$(MAKELEVEL)", "0") 77 MAKEFLAGS += -j$(NCORES) --no-print-directory 78 endif 79 80 GO := go 81 HOSTGO := go 82 # By default, build all Go binaries as static. We don't need cgo and it is 83 # known to cause problems at least on Android emulator. 84 CGO_ENABLED ?= 0 85 export CGO_ENABLED 86 TARGETGOOS := $(TARGETOS) 87 TARGETGOARCH := $(TARGETVMARCH) 88 export GO111MODULE=on 89 export GOBIN=$(shell pwd -P)/bin 90 91 ifeq ("$(TARGETOS)", "test") 92 TARGETGOOS := $(HOSTOS) 93 TARGETGOARCH := $(HOSTARCH) 94 endif 95 96 ifeq ("$(TARGETOS)", "fuchsia") 97 TARGETGOOS := $(HOSTOS) 98 TARGETGOARCH := $(HOSTARCH) 99 endif 100 101 ifeq ("$(TARGETOS)", "trusty") 102 TARGETGOOS := $(HOSTOS) 103 TARGETGOARCH := $(HOSTARCH) 104 endif 105 106 .PHONY: all clean host target \ 107 manager executor kfuzztest ci hub \ 108 execprog mutate prog2c trace2syz repro upgrade db \ 109 usbgen symbolize cover kconf syz-build crush \ 110 bin/syz-extract bin/syz-fmt \ 111 extract generate generate_go generate_rpc generate_sys \ 112 format format_go format_cpp format_sys \ 113 tidy test test_race \ 114 check_copyright check_language check_whitespace check_links check_diff check_commits check_shebang check_html \ 115 presubmit presubmit_aux presubmit_build presubmit_arch_linux presubmit_arch_freebsd \ 116 presubmit_arch_netbsd presubmit_arch_openbsd presubmit_arch_darwin presubmit_arch_windows \ 117 presubmit_arch_executor presubmit_dashboard presubmit_race presubmit_race_dashboard presubmit_old 118 119 all: host target 120 host: manager repro mutate prog2c db upgrade 121 target: execprog executor check_syzos 122 123 executor: descriptions 124 ifeq ($(TARGETOS),fuchsia) 125 # Dont build syz-executor for fuchsia. 126 else 127 ifneq ("$(BUILDOS)", "$(NATIVEBUILDOS)") 128 $(info ************************************************************************************) 129 $(info Executor will not be built) 130 $(info Building executor for ${TARGETOS} is not supported on ${BUILDOS}) 131 $(info ************************************************************************************) 132 else 133 ifneq ("$(NO_CROSS_COMPILER)", "") 134 $(info ************************************************************************************) 135 $(info Executor will not be built) 136 $(info Native cross-compiler is missing/broken:) 137 $(info $(NO_CROSS_COMPILER)) 138 $(info ************************************************************************************) 139 else 140 mkdir -p ./bin/$(TARGETOS)_$(TARGETARCH) 141 $(CXX) -o ./bin/$(TARGETOS)_$(TARGETARCH)/syz-executor$(EXE) executor/executor.cc \ 142 $(ADDCXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -DGOOS_$(TARGETOS)=1 -DGOARCH_$(TARGETARCH)=1 \ 143 -DHOSTGOOS_$(HOSTOS)=1 -DGIT_REVISION=\"$(REV)\" 144 endif 145 endif 146 endif 147 148 # .descriptions is a stub file that serves as a substitute for all files generated by syz-sysgen: 149 # sys/*/gen/*.go, executor/defs.h, executor/syscalls.h 150 # syz-sysgen generates them all at once, so we can't make each of them an independent target. 151 .PHONY: descriptions 152 descriptions: 153 go list -f '{{.Stale}}' $(GOHOSTFLAGS) ./sys/syz-sysgen | grep -q false || go install $(GOHOSTFLAGS) ./sys/syz-sysgen 154 $(MAKE) .descriptions 155 156 .descriptions: sys/*/*.txt sys/*/*.const bin/syz-sysgen 157 bin/syz-sysgen 158 touch .descriptions 159 160 go-flags: 161 @echo "${GOHOSTFLAGS}" 162 163 manager: descriptions 164 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-manager github.com/google/syzkaller/syz-manager 165 166 execprog: descriptions 167 GOOS=$(TARGETGOOS) GOARCH=$(TARGETGOARCH) $(GO) build $(GOTARGETFLAGS) -o ./bin/$(TARGETOS)_$(TARGETVMARCH)/syz-execprog$(EXE) github.com/google/syzkaller/tools/syz-execprog 168 169 ci: descriptions 170 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-ci github.com/google/syzkaller/syz-ci 171 172 hub: descriptions 173 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-hub github.com/google/syzkaller/syz-hub 174 175 repro: descriptions 176 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-repro github.com/google/syzkaller/tools/syz-repro 177 178 mutate: descriptions 179 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-mutate github.com/google/syzkaller/tools/syz-mutate 180 181 diff: descriptions target 182 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-diff github.com/google/syzkaller/tools/syz-diff 183 184 prog2c: descriptions 185 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-prog2c github.com/google/syzkaller/tools/syz-prog2c 186 187 crush: descriptions 188 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-crush github.com/google/syzkaller/tools/syz-crush 189 190 reporter: descriptions 191 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-reporter github.com/google/syzkaller/tools/syz-reporter 192 193 db: descriptions 194 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-db github.com/google/syzkaller/tools/syz-db 195 196 upgrade: descriptions 197 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-upgrade github.com/google/syzkaller/tools/syz-upgrade 198 199 trace2syz: descriptions 200 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-trace2syz github.com/google/syzkaller/tools/syz-trace2syz 201 202 expand: descriptions 203 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-expand github.com/google/syzkaller/tools/syz-expand 204 205 usbgen: 206 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-usbgen github.com/google/syzkaller/tools/syz-usbgen 207 208 symbolize: 209 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-symbolize github.com/google/syzkaller/tools/syz-symbolize 210 cover: 211 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-cover github.com/google/syzkaller/tools/syz-cover 212 kconf: 213 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-kconf github.com/google/syzkaller/tools/syz-kconf 214 syz-build: 215 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-build github.com/google/syzkaller/tools/syz-build 216 217 bisect: descriptions 218 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-bisect github.com/google/syzkaller/tools/syz-bisect 219 220 ifeq ($(HOSTOS), linux) 221 kfuzztest: descriptions 222 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-kfuzztest github.com/google/syzkaller/syz-kfuzztest 223 else 224 kfuzztest: 225 @echo "Skipping kfuzztest build (it's Linux-only)" 226 endif 227 228 verifier: descriptions 229 # TODO: switch syz-verifier to use syz-executor. 230 # GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o ./bin/syz-verifier github.com/google/syzkaller/syz-verifier 231 232 # `extract` extracts const files from various kernel sources, and may only 233 # re-generate parts of files. 234 extract: bin/syz-extract 235 bin/syz-extract -build -os=$(TARGETOS) -sourcedir=$(SOURCEDIR) $(FILES) 236 237 bin/syz-extract: 238 GOOS=$(HOSTOS) GOARCH=$(HOSTARCH) $(HOSTGO) build $(GOHOSTFLAGS) -o $@ ./sys/syz-extract 239 240 # `generate` does *not* depend on any kernel sources, and generates everything 241 # in one pass, for all arches. It can be run on a bare syzkaller checkout. 242 generate: 243 $(MAKE) descriptions 244 $(MAKE) generate_go 245 $(MAKE) generate_rpc 246 $(MAKE) format 247 248 generate_go: format_cpp 249 $(GO) generate ./... 250 $(GO) tool mockery --log-level="error" 251 252 generate_rpc: 253 flatc -o pkg/flatrpc --warnings-as-errors --gen-object-api --filename-suffix "" --go --gen-onefile --go-namespace flatrpc pkg/flatrpc/flatrpc.fbs 254 flatc -o pkg/flatrpc --warnings-as-errors --gen-object-api --filename-suffix "" --cpp --scoped-enums pkg/flatrpc/flatrpc.fbs 255 $(GO) fmt ./pkg/flatrpc/flatrpc.go 256 257 generate_trace2syz: 258 (cd tools/syz-trace2syz/parser; ragel -Z -G2 -o lex.go straceLex.rl) 259 (cd tools/syz-trace2syz/parser; goyacc -o strace.go -p Strace -v="" strace.y) 260 261 format: format_go format_cpp format_sys format_keep_sorted 262 263 format_go: 264 $(GO) fmt ./... 265 266 format_keep_sorted: 267 $(HOSTGO) install github.com/google/keep-sorted 268 find . -name "*.go" -exec bin/keep-sorted {} \; 269 find . -name "*.yml" -exec bin/keep-sorted {} \; 270 271 format_cpp: 272 clang-format --style=file -i executor/*.cc executor/*.h \ 273 executor/android/android_seccomp.h \ 274 tools/kcovtrace/*.c tools/kcovfuzzer/*.c tools/fops_probe/*.cc \ 275 tools/clang/*.h \ 276 tools/clang/declextract/*.h tools/clang/declextract/*.cpp \ 277 tools/clang/codesearch/*.h tools/clang/codesearch/*.cpp 278 279 format_sys: bin/syz-fmt 280 bin/syz-fmt all 281 282 bin/syz-fmt: 283 $(HOSTGO) build $(GOHOSTFLAGS) -o $@ ./tools/syz-fmt 284 285 configs: kconf 286 bin/syz-kconf -config dashboard/config/linux/main.yml -sourcedir $(SOURCEDIR) -instance=$(INSTANCE) 287 288 tidy: descriptions 289 clang-tidy -quiet -header-filter=executor/[^_].* -warnings-as-errors=* \ 290 -checks=-*,misc-definitions-in-headers,bugprone-macro-parentheses,clang-analyzer-*,-clang-analyzer-security.insecureAPI*,-clang-analyzer-optin.performance*,-clang-analyzer-optin.core.EnumCastOutOfRange \ 291 -extra-arg=-DGOOS_$(TARGETOS)=1 -extra-arg=-DGOARCH_$(TARGETARCH)=1 \ 292 -extra-arg=-DHOSTGOOS_$(HOSTOS)=1 -extra-arg=-DGIT_REVISION=\"$(REV)\" \ 293 --extra-arg=-I. --extra-arg=-Iexecutor/_include \ 294 --extra-arg=-std=c++17 \ 295 executor/*.cc 296 297 lint: 298 CGO_ENABLED=1 $(HOSTGO) install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.6.2 299 CGO_ENABLED=1 $(HOSTGO) build -buildmode=plugin -o bin/syz-linter.so ./tools/syz-linter 300 bin/golangci-lint run ./... 301 302 presubmit: 303 $(MAKE) presubmit_aux 304 $(MAKE) presubmit_build 305 $(MAKE) presubmit_arch_linux 306 $(MAKE) presubmit_arch_freebsd 307 $(MAKE) presubmit_arch_netbsd 308 $(MAKE) presubmit_arch_openbsd 309 $(MAKE) presubmit_arch_darwin 310 $(MAKE) presubmit_arch_windows 311 $(MAKE) presubmit_arch_executor 312 $(MAKE) presubmit_race 313 $(MAKE) presubmit_race_dashboard 314 315 presubmit_aux: 316 $(MAKE) generate 317 $(MAKE) -j100 check_commits check_diff check_copyright check_language check_whitespace check_links check_html check_shebang tidy 318 $(GO) mod tidy 319 320 presubmit_build: descriptions 321 # Run go build before lint for better error messages if build is broken. 322 # This does not check build of test files, but running go test takes too long (even for building). 323 $(GO) build ./... 324 $(MAKE) lint 325 SYZ_SKIP_DEV_APPSERVER_TESTS=1 $(MAKE) test 326 327 presubmit_arch_linux: descriptions 328 HOSTOS=linux HOSTARCH=amd64 $(MAKE) host 329 TARGETOS=linux TARGETARCH=amd64 TARGETVMARCH=amd64 $(MAKE) target 330 TARGETOS=linux TARGETARCH=386 TARGETVMARCH=386 $(MAKE) target 331 TARGETOS=linux TARGETARCH=arm64 TARGETVMARCH=arm64 $(MAKE) target 332 TARGETOS=linux TARGETARCH=arm TARGETVMARCH=arm $(MAKE) target 333 TARGETOS=linux TARGETARCH=mips64le TARGETVMARCH=mips64le $(MAKE) target 334 TARGETOS=linux TARGETARCH=ppc64le TARGETVMARCH=ppc64le $(MAKE) target 335 TARGETOS=linux TARGETARCH=riscv64 TARGETVMARCH=riscv64 $(MAKE) target 336 TARGETOS=linux TARGETARCH=s390x TARGETVMARCH=s390x $(MAKE) target 337 338 presubmit_arch_freebsd: descriptions 339 HOSTOS=freebsd HOSTARCH=amd64 $(MAKE) host 340 TARGETOS=freebsd TARGETARCH=amd64 TARGETVMARCH=amd64 $(MAKE) target 341 TARGETOS=freebsd TARGETARCH=386 TARGETVMARCH=386 $(MAKE) target 342 TARGETOS=freebsd TARGETARCH=arm64 TARGETVMARCH=arm64 $(MAKE) target 343 TARGETOS=freebsd TARGETARCH=riscv64 TARGETVMARCH=riscv64 $(MAKE) target 344 345 presubmit_arch_netbsd: descriptions 346 HOSTOS=netbsd HOSTARCH=amd64 $(MAKE) host 347 TARGETOS=netbsd TARGETARCH=amd64 TARGETVMARCH=amd64 $(MAKE) target 348 349 presubmit_arch_openbsd: descriptions 350 HOSTOS=openbsd HOSTARCH=amd64 $(MAKE) host 351 TARGETOS=openbsd TARGETARCH=amd64 TARGETVMARCH=amd64 $(MAKE) target 352 353 presubmit_arch_darwin: descriptions 354 HOSTOS=darwin HOSTARCH=amd64 $(MAKE) host 355 356 presubmit_arch_windows: descriptions 357 TARGETOS=windows TARGETARCH=amd64 TARGETVMARCH=amd64 $(MAKE) target 358 359 presubmit_arch_executor: descriptions 360 TARGETOS=linux TARGETARCH=amd64 TARGETVMARCH=amd64 SYZ_CLANG=yes $(MAKE) executor 361 TARGETOS=fuchsia TARGETARCH=amd64 TARGETVMARCH=amd64 $(MAKE) executor 362 TARGETOS=fuchsia TARGETARCH=arm64 TARGETVMARCH=arm64 $(MAKE) executor 363 TARGETOS=test TARGETARCH=64 TARGETVMARCH=64 $(MAKE) executor 364 TARGETOS=test TARGETARCH=64_fork TARGETVMARCH=64_fork $(MAKE) executor 365 TARGETOS=test TARGETARCH=32 TARGETVMARCH=32 $(MAKE) executor 366 TARGETOS=test TARGETARCH=32_fork TARGETVMARCH=32_fork $(MAKE) executor 367 368 presubmit_dashboard: descriptions 369 SYZ_CLANG=yes $(GO) test -short -vet=off -coverprofile=.coverage.txt ./dashboard/app 370 371 presubmit_race: descriptions 372 # -race requires cgo 373 CGO_ENABLED=1 $(GO) test -race; if test $$? -ne 2; then \ 374 CGO_ENABLED=1 SYZ_SKIP_DEV_APPSERVER_TESTS=1 $(GO) test -race -short -vet=off -bench=.* -benchtime=.2s ./... ;\ 375 fi 376 377 presubmit_race_dashboard: descriptions 378 # -race requires cgo 379 CGO_ENABLED=1 $(GO) test -race; if test $$? -ne 2; then \ 380 CGO_ENABLED=1 $(GO) test -race -short -vet=off -bench=.* -benchtime=.2s ./dashboard/app/... ;\ 381 fi 382 383 presubmit_old: descriptions 384 # Binaries we can compile in syz-old-env. 386 is broken, riscv64 is missing. 385 TARGETARCH=amd64 TARGETVMARCH=amd64 $(MAKE) target 386 TARGETARCH=arm64 TARGETVMARCH=arm64 $(MAKE) target 387 TARGETARCH=arm TARGETVMARCH=arm $(MAKE) target 388 TARGETARCH=ppc64le TARGETVMARCH=ppc64le $(MAKE) target 389 TARGETARCH=mips64le TARGETVMARCH=mips64le $(MAKE) target 390 TARGETARCH=s390x TARGETVMARCH=s390x $(MAKE) target 391 392 presubmit_gvisor: host target 393 ./tools/gvisor-smoke-test.sh 394 395 test: descriptions 396 $(GO) test -short -coverprofile=.coverage.txt ./... 397 398 clean: 399 rm -rf ./bin .descriptions executor/defs.h executor/syscalls.h sys/gen sys/register.go 400 401 # For a tupical Ubuntu/Debian distribution. 402 # We use "|| true" for apt-get install because packages are all different on different distros. 403 # Also see tools/syz-env for container approach. 404 install_prerequisites: act 405 uname -a 406 sudo apt-get update 407 sudo apt-get install -y -q libc6-dev-i386 linux-libc-dev \ 408 gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi gcc-powerpc64le-linux-gnu gcc-mips64el-linux-gnuabi64 || true 409 sudo apt-get install -y -q g++-aarch64-linux-gnu || true 410 sudo apt-get install -y -q g++-powerpc64le-linux-gnu || true 411 sudo apt-get install -y -q g++-arm-linux-gnueabi || true 412 sudo apt-get install -y -q g++-mips64el-linux-gnuabi64 || true 413 sudo apt-get install -y -q g++-s390x-linux-gnu || true 414 sudo apt-get install -y -q g++-riscv64-linux-gnu || true 415 sudo apt-get install -y -q g++ || true 416 [ -z "$(shell which python)" -a -n "$(shell which python3)" ] && sudo apt-get install -y -q python-is-python3 || true 417 sudo apt-get install -y -q clang-tidy || true 418 sudo apt-get install -y -q clang clang-format ragel 419 sudo apt-get install -y -q flatbuffers-compiler libflatbuffers-dev 420 GO111MODULE=off go get -u golang.org/x/tools/cmd/goyacc 421 422 check_copyright: 423 ./tools/check-copyright.sh 424 425 check_language: 426 ./tools/check-language.sh 427 428 check_whitespace: 429 ./tools/check-whitespace.sh 430 431 check_commits: 432 ./tools/check-commits.sh 433 434 check_links: 435 python ./tools/check_links.py $$(pwd) $$(find . -name '*.md') 436 437 check_html: 438 ./tools/check-html.sh 439 440 check_syzos: executor 441 ./tools/check-syzos.sh 2>/dev/null 442 443 # Check that the diff is empty. This is meant to be executed after generating 444 # and formatting the code to make sure that everything is committed. 445 check_diff: 446 @if [ "$(shell git --no-pager diff --name-only)" != "" ]; then \ 447 git --no-pager diff; \ 448 git --no-pager diff --name-only | \ 449 sed "s#.*#&:1:1: The file is not formatted/regenerated. Run 'make generate' and include it into the commit.#g"; \ 450 false; \ 451 fi 452 453 check_shebang: 454 ./tools/check-shebang.sh 455 456 act: 457 curl https://raw.githubusercontent.com/nektos/act/master/install.sh | bash