xref: /aosp_15_r20/external/jazzer-api/third_party/libFuzzer.BUILD (revision 33edd6723662ea34453766bfdca85dbfdd5342b8)
1*33edd672SMarkcc_library(
2*33edd672SMark    name = "libfuzzer_no_main",
3*33edd672SMark    srcs = glob(
4*33edd672SMark        [
5*33edd672SMark            "*.cpp",
6*33edd672SMark        ],
7*33edd672SMark        exclude = ["FuzzerMain.cpp"],
8*33edd672SMark    ),
9*33edd672SMark    hdrs = glob([
10*33edd672SMark        "*.h",
11*33edd672SMark        "*.def",
12*33edd672SMark    ]),
13*33edd672SMark    copts = [
14*33edd672SMark        # https://github.com/llvm/llvm-project/blob/eab395fa4074a5a0cbfebe811937dbb1816df9ef/compiler-rt/CMakeLists.txt#L294-L309
15*33edd672SMark        "-fno-builtin",
16*33edd672SMark        "-fno-exceptions",
17*33edd672SMark        "-funwind-tables",
18*33edd672SMark        "-fno-stack-protector",
19*33edd672SMark        "-fvisibility=hidden",
20*33edd672SMark        "-fno-lto",
21*33edd672SMark    ] + select({
22*33edd672SMark        "@platforms//os:windows": [
23*33edd672SMark            # https://github.com/llvm/llvm-project/blob/eab395fa4074a5a0cbfebe811937dbb1816df9ef/compiler-rt/CMakeLists.txt#L362-L363
24*33edd672SMark            "/Oy-",
25*33edd672SMark            "/GS-",
26*33edd672SMark            "/std:c++17",
27*33edd672SMark        ],
28*33edd672SMark        "//conditions:default": [
29*33edd672SMark            # https://github.com/llvm/llvm-project/commit/29d3ba7576b30a37bd19a5d40f304fc39c6ab13d
30*33edd672SMark            "-fno-omit-frame-pointer",
31*33edd672SMark            # https://github.com/llvm/llvm-project/blob/eab395fa4074a5a0cbfebe811937dbb1816df9ef/compiler-rt/CMakeLists.txt#L392
32*33edd672SMark            "-O3",
33*33edd672SMark            # Use the same C++ standard as Jazzer itself.
34*33edd672SMark            "-std=c++17",
35*33edd672SMark        ],
36*33edd672SMark    }),
37*33edd672SMark    linkstatic = True,
38*33edd672SMark    visibility = ["//visibility:public"],
39*33edd672SMark    alwayslink = True,
40*33edd672SMark)
41