1DESCRIPTION = "syzkaller is an unsupervised coverage-guided kernel fuzzer"
2LICENSE = "Apache-2.0"
3LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=5335066555b14d832335aa4660d6c376"
4
5inherit go-mod
6
7GO_IMPORT = "github.com/google/syzkaller"
8
9SRC_URI = "git://${GO_IMPORT};protocol=https;destsuffix=${BPN}-${PV}/src/${GO_IMPORT};branch=master \
10           file://0001-sys-targets-targets.go-allow-users-to-override-hardc.patch;patchdir=src/${GO_IMPORT} \
11           "
12SRCREV = "67cb024cd1a3c95e311263a5c95e957f9abfd8ca"
13
14COMPATIBLE_HOST = "(x86_64|i.86|arm|aarch64).*-linux"
15
16B = "${S}/src/${GO_IMPORT}/bin"
17
18GO_EXTRA_LDFLAGS += ' -X ${GO_IMPORT}/prog.GitRevision=${SRCREV}'
19
20export GOHOSTFLAGS="${GO_LINKSHARED} ${GOBUILDFLAGS}"
21export GOTARGETFLAGS="${GO_LINKSHARED} ${GOBUILDFLAGS}"
22export TARGETOS = '${GOOS}'
23export TARGETARCH = '${GOARCH}'
24export TARGETVMARCH = '${GOARCH}'
25
26CGO_ENABLED = "0"
27
28DEPENDS:class-native += "qemu-system-native"
29
30do_compile:class-native() {
31    export HOSTOS="${GOHOSTOS}"
32    export HOSTARCH="${GOHOSTARCH}"
33
34    oe_runmake HOSTGO="${GO}" host
35}
36
37do_compile:class-target() {
38    export HOSTOS="${GOOS}"
39    export HOSTARCH="${GOARCH}"
40    export SYZ_CC_${TARGETOS}_${TARGETARCH}="${CC}"
41
42    # Unset GOOS and GOARCH so that the correct syz-sysgen binary can be
43    # generated. Fixes:
44    # go install: cannot install cross-compiled binaries when GOBIN is set
45    unset GOOS
46    unset GOARCH
47
48    oe_runmake GO="${GO}" CC="${CXX}" CFLAGS="${CXXFLAGS} ${LDFLAGS}" REV=${SRCREV} target
49}
50
51do_install:class-native() {
52    SYZ_BINS_NATIVE="syz-manager syz-runtest syz-repro syz-mutate syz-prog2c \
53                     syz-db syz-upgrade"
54
55    install -d ${D}${bindir}
56
57    for i in ${SYZ_BINS_NATIVE}; do
58        install -m 0755 ${B}/${i} ${D}${bindir}
59    done
60}
61
62do_install:class-target() {
63    SYZ_TARGET_DIR="${TARGETOS}_${TARGETARCH}"
64    SYZ_BINS_TARGET="syz-fuzzer syz-execprog syz-stress syz-executor"
65
66    install -d ${D}${bindir}/${SYZ_TARGET_DIR}
67
68    for i in ${SYZ_BINS_TARGET}; do
69        install -m 0755 ${B}/${SYZ_TARGET_DIR}/${i} ${D}${bindir}/${SYZ_TARGET_DIR}
70    done
71}
72
73BBCLASSEXTEND += "native"
74