macro_name CLANGCL minimum_supported_version 14.0 binary_name clang-cl linker_name lld-link output_to_object "/Fo" output_to_exe "/OUT:" add_include_dir_option "/I" add_system_include_dir_option "/external:W0 /external:I" add_lib_dir_option "/LIBPATH:" add_compile_definition_option "/D" add_lib_option "%s.lib" compile_flags "/nologo /c" supports_gcc_inline_asm yes optimization_flags "/O2 /Oi" size_optimization_flags "/O1 /Os" # for debug info in the object file (required if using sccache): #debug_info_flags "/Z7" # for using a PDB file: debug_info_flags "/Zi /FS" preproc_flags "/nologo /EP" # clang-cl has /Zc:preprocessor behavior by default, and does not accept the flag lang_flags "/Zc:inline /std:c++20 /EHs /GR" # 4251: STL types used in DLL interface # 4275: ??? # 5072: ASan without debug info warning_flags "/W4 /wd4251 /wd4275 /wd5072" werror_flags "/WX" visibility_build_flags "/DBOTAN_DLL=__declspec(dllexport)" visibility_attribute "__declspec(dllimport)" # Include dependency tracking for Ninja # See: https://ninja-build.org/manual.html#ref_headers ninja_header_deps_style 'msvc' header_deps_flag '/showIncludes' ar_command lib ar_options "/nologo" ar_output_to "/OUT:" default -> address iterator -> "/D_ITERATOR_DEBUG_LEVEL=1" address -> "/fsanitize=address" sse2 -> "-msse2" ssse3 -> "-mssse3" sse41 -> "-msse4.1" avx2 -> "-mavx2" avx512 -> "-mavx512f -mavx512bw -mavx512dq -mavx512vbmi -mavx512vbmi2 -mavx512bitalg -mavx512vl -mavx512ifma" bmi2 -> "-mbmi -mbmi2" aesni -> "-maes -mpclmul" rdrand -> "-mrdrnd" rdseed -> "-mrdseed" sha -> "-msha" altivec -> "-maltivec" arm64:armv8crypto -> "-march=armv8+crypto" arm64:armv8sha512 -> "-march=armv8.2-a+sha3" arm32:neon -> "-mfpu=neon" arm64:neon -> "" debug -> "/Fd%{build_dir}/%{libname}.pdb" default -> "{linker} /DLL" default-debug -> "{linker} /DLL /DEBUG" default -> "{linker}" default-debug -> "{linker} /DEBUG" all -> "/bigobj" # These can be overridden with --msvc-runtime option rt -> "/MD" rt-debug -> "/MDd" default -> asm