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