xref: /openbsd-src/gnu/llvm/compiler-rt/lib/CMakeLists.txt (revision 810390e339a5425391477d5d41c78d7cab2424ac)
13cab2bb3Spatrick# First, add the subdirectories which contain feature-based runtime libraries
23cab2bb3Spatrick# and several convenience helper libraries.
33cab2bb3Spatrick
43cab2bb3Spatrickinclude(AddCompilerRT)
53cab2bb3Spatrickinclude(SanitizerUtils)
63cab2bb3Spatrick
73cab2bb3Spatrick# Hoist the building of sanitizer_common on whether we're building either the
83cab2bb3Spatrick# sanitizers or xray (or both).
93cab2bb3Spatrick#
103cab2bb3Spatrick#TODO: Refactor sanitizer_common into smaller pieces (e.g. flag parsing, utils).
113cab2bb3Spatrickif (COMPILER_RT_HAS_SANITIZER_COMMON AND
12d89ec533Spatrick    (COMPILER_RT_BUILD_SANITIZERS OR COMPILER_RT_BUILD_XRAY OR COMPILER_RT_BUILD_MEMPROF))
133cab2bb3Spatrick  add_subdirectory(sanitizer_common)
143cab2bb3Spatrickendif()
153cab2bb3Spatrick
163cab2bb3Spatrickif(COMPILER_RT_BUILD_BUILTINS)
173cab2bb3Spatrick  add_subdirectory(builtins)
183cab2bb3Spatrickendif()
193cab2bb3Spatrick
20*810390e3Srobertif(COMPILER_RT_BUILD_CRT)
213cab2bb3Spatrick  add_subdirectory(crt)
223cab2bb3Spatrickendif()
233cab2bb3Spatrick
243cab2bb3Spatrickfunction(compiler_rt_build_runtime runtime)
253cab2bb3Spatrick  string(TOUPPER ${runtime} runtime_uppercase)
263cab2bb3Spatrick  if(COMPILER_RT_HAS_${runtime_uppercase})
273cab2bb3Spatrick    if(${runtime} STREQUAL tsan)
283cab2bb3Spatrick      add_subdirectory(tsan/dd)
293cab2bb3Spatrick    endif()
30*810390e3Srobert    if(${runtime} STREQUAL scudo_standalone)
313cab2bb3Spatrick      add_subdirectory(scudo/standalone)
32*810390e3Srobert    else()
33*810390e3Srobert      add_subdirectory(${runtime})
343cab2bb3Spatrick    endif()
353cab2bb3Spatrick  endif()
363cab2bb3Spatrickendfunction()
373cab2bb3Spatrick
38d89ec533Spatrickif(COMPILER_RT_BUILD_SANITIZERS OR COMPILER_RT_BUILD_MEMPROF)
393cab2bb3Spatrick  compiler_rt_build_runtime(interception)
40d89ec533Spatrickendif()
413cab2bb3Spatrick
42d89ec533Spatrickif(COMPILER_RT_BUILD_SANITIZERS)
433cab2bb3Spatrick  if(COMPILER_RT_HAS_SANITIZER_COMMON)
443cab2bb3Spatrick    add_subdirectory(stats)
453cab2bb3Spatrick    add_subdirectory(lsan)
463cab2bb3Spatrick    add_subdirectory(ubsan)
473cab2bb3Spatrick  endif()
483cab2bb3Spatrick
493cab2bb3Spatrick  foreach(sanitizer ${COMPILER_RT_SANITIZERS_TO_BUILD})
503cab2bb3Spatrick    compiler_rt_build_runtime(${sanitizer})
513cab2bb3Spatrick  endforeach()
523cab2bb3Spatrickendif()
533cab2bb3Spatrick
543cab2bb3Spatrickif(COMPILER_RT_BUILD_PROFILE AND COMPILER_RT_HAS_PROFILE)
553cab2bb3Spatrick  compiler_rt_build_runtime(profile)
563cab2bb3Spatrickendif()
573cab2bb3Spatrick
583cab2bb3Spatrickif(COMPILER_RT_BUILD_XRAY)
593cab2bb3Spatrick  compiler_rt_build_runtime(xray)
603cab2bb3Spatrickendif()
613cab2bb3Spatrick
623cab2bb3Spatrickif(COMPILER_RT_BUILD_LIBFUZZER)
633cab2bb3Spatrick  compiler_rt_build_runtime(fuzzer)
643cab2bb3Spatrickendif()
651f9cb04fSpatrick
66d89ec533Spatrickif(COMPILER_RT_BUILD_MEMPROF AND COMPILER_RT_HAS_SANITIZER_COMMON)
67d89ec533Spatrick  compiler_rt_build_runtime(memprof)
68d89ec533Spatrickendif()
69d89ec533Spatrick
70d89ec533Spatrickif(COMPILER_RT_BUILD_ORC)
71d89ec533Spatrick  compiler_rt_build_runtime(orc)
72d89ec533Spatrickendif()
73d89ec533Spatrick
741f9cb04fSpatrick# It doesn't normally make sense to build runtimes when a sanitizer is enabled,
751f9cb04fSpatrick# so we don't add_subdirectory the runtimes in that case. However, the opposite
761f9cb04fSpatrick# is true for fuzzers that exercise parts of the runtime. So we add the fuzzer
771f9cb04fSpatrick# directories explicitly here.
781f9cb04fSpatrickadd_subdirectory(scudo/standalone/fuzz)
79