Fastbuild basic stuff
This commit is contained in:
3
External/SDK/Clang/Clang.bff
vendored
Normal file
3
External/SDK/Clang/Clang.bff
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
#if __WINDOWS__
|
||||
#include "Windows/Clang.bff"
|
||||
#endif
|
||||
211
External/SDK/Clang/Windows/Clang.bff
vendored
Normal file
211
External/SDK/Clang/Windows/Clang.bff
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
// Clang 19.x.x
|
||||
//------------------------------------------------------------------------------
|
||||
//
|
||||
// Detect Clang
|
||||
//
|
||||
// We search in the following locations, in order of preference:
|
||||
// 1) Vendorized in External (side by side with this bff)
|
||||
// 2) Part of a Visual Studio installation (Program Files)
|
||||
// 3) Default install location
|
||||
//
|
||||
|
||||
#include "../../CPP/CPPHelper.bff"
|
||||
|
||||
#if file_exists( "19.1.5/bin/clang-cl.exe" )
|
||||
// Vendorized
|
||||
.Clang19_BasePath = '$_CURRENT_BFF_DIR_$/19.1.5'
|
||||
.Clang19_Version = '19.1.5'
|
||||
#else
|
||||
#if file_exists( "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/LLVM/x64/bin/clang-cl.exe" )
|
||||
// Installed with VS2022
|
||||
.Clang19_BasePath = 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/LLVM/x64'
|
||||
.Clang19_Version = '19.x.x'
|
||||
#else
|
||||
#if file_exists( "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/LLVM/x64/bin/clang-cl.exe" )
|
||||
// Installed with VS2022
|
||||
.Clang19_BasePath = 'C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/LLVM/x64'
|
||||
.Clang19_Version = '19.x.x'
|
||||
#else
|
||||
#if file_exists( "C:/Program Files/LLVM/bin/clang-cl.exe" )
|
||||
// Default Install
|
||||
.Clang19_BasePath = 'C:/Program Files/LLVM'
|
||||
.Clang19_Version = '19.x.x'
|
||||
#else
|
||||
//
|
||||
// Failed
|
||||
//
|
||||
Print( '----------------------------------------------------------------------' )
|
||||
Print( '- Unable to auto-detect Clang - please specify installation manually -' )
|
||||
Print( '----------------------------------------------------------------------' )
|
||||
.Clang19_BasePath = .Set_Path_Here // <-- Set path here
|
||||
.Clang19_Version = .Set_Version_Here // <-- Set version here
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Print details of used version. TODO:C Move to Clang.bff
|
||||
Print( 'Using Clang $Clang19_Version$ from $Clang19_BasePath$' )
|
||||
|
||||
// Compiler
|
||||
//------------------------------------------------------------------------------
|
||||
Compiler( 'Compiler-Clang19' )
|
||||
{
|
||||
.Root = '$Clang19_BasePath$'
|
||||
.ExtraFiles = {
|
||||
'$Root$/bin/concrt140.dll'
|
||||
'$Root$/bin/msvcp140.dll'
|
||||
'$Root$/bin/vcruntime140.dll'
|
||||
'$Root$/bin/vcruntime140_1.dll'
|
||||
}
|
||||
.Executable = '$Root$\bin\clang-cl.exe'
|
||||
|
||||
// Allow tests to activate some experimental behavior
|
||||
#if ENABLE_RELATIVE_PATHS
|
||||
.UseRelativePaths_Experimental = true
|
||||
#endif
|
||||
#if ENABLE_SOURCE_MAPPING
|
||||
.SourceMapping_Experimental = '/fastbuild-test-mapping'
|
||||
#endif
|
||||
}
|
||||
|
||||
// Compiler
|
||||
//------------------------------------------------------------------------------
|
||||
Compiler( 'Compiler-Clang19-NonCL' )
|
||||
{
|
||||
.Root = '$Clang19_BasePath$'
|
||||
.ExtraFiles = {
|
||||
'$Root$/bin/msvcp140.dll'
|
||||
'$Root$/bin/vcruntime140.dll'
|
||||
}
|
||||
.Executable = '$Root$\bin\clang.exe'
|
||||
|
||||
// Allow tests to activate some experimental behavior
|
||||
#if ENABLE_RELATIVE_PATHS
|
||||
.UseRelativePaths_Experimental = true
|
||||
#endif
|
||||
#if ENABLE_SOURCE_MAPPING
|
||||
.SourceMapping_Experimental = '/fastbuild-test-mapping'
|
||||
#endif
|
||||
}
|
||||
|
||||
// ToolChain
|
||||
//------------------------------------------------------------------------------
|
||||
.ToolChain_Clang_Windows_Common =
|
||||
[
|
||||
// Clang for Windows relies on the VS being present:
|
||||
// - crt headers
|
||||
// - crt libs/dlls
|
||||
Using( .ToolChain_VS_Windows_X64 )
|
||||
|
||||
.Platform = 'x64Clang'
|
||||
|
||||
// Librarian
|
||||
.Librarian = '$Clang19_BasePath$\bin\llvm-ar.exe'
|
||||
.LibrarianOptions = '/c echo %1 > %2' // 'rc "%2" "%1"' // NOTE: output must come first
|
||||
|
||||
// Linker
|
||||
.Linker = '$Clang19_BasePath$\bin\lld-link.exe'
|
||||
.LinkerOptions = '/NODEFAULTLIB /WX /NOLOGO /INCREMENTAL:NO /OUT:"%2" "%1" /DEBUG'
|
||||
+ .VSLibPaths
|
||||
|
||||
// Compiler Warnings
|
||||
.CommonCompilerWarningOptions // Enable warnings
|
||||
= ' -Wall -Wextra -Weverything' // All warnings
|
||||
+ ' -Werror -Wfatal-errors' // Warnings as fatal errors
|
||||
|
||||
// Warnings that are not useful
|
||||
+ ' -Wno-#pragma-messages' // warning : %s [-W#pragma-messages]
|
||||
+ ' -Wno-c++98-compat-pedantic' // variadic macros are incompatible with C++98
|
||||
+ ' -Wno-exit-time-destructors' // declaration requires an exit-time destructor
|
||||
+ ' -Wno-global-constructors' // declaration requires a global destructor
|
||||
+ ' -Wno-invalid-offsetof' // we get the offset of members in non-POD types
|
||||
+ ' -Wno-missing-prototypes' // no previous prototype for function '%s'
|
||||
+ ' -Wno-missing-variable-declarations' // no previous extern declaration for non-static variable '%s'
|
||||
+ ' -Wno-gnu-line-marker' // Clang complains about directives its own preprocessor generated
|
||||
+ ' -Wno-switch-enum' // Allow the use of "default" labels (we keep -Wswitch to ensure all cases are handled)
|
||||
+ ' -Wno-switch-default' // Don't require default: when all cases are already handled
|
||||
+ .CPPCompilerWarningOptions
|
||||
|
||||
// Warnings that fire but might be best to be fixed
|
||||
+ ' -Wno-anon-enum-enum-conversion' // conversions between unrelated anonymous enums
|
||||
+ ' -Wno-cast-function-type-strict' // converts to incompatible function type
|
||||
+ ' -Wno-cast-qual' // cast from 'const %s *' to '%s *' drops const qualifier
|
||||
+ ' -Wno-deprecated-copy-dtor' // definition of implicit copy constructor for '%s' is deprecated because it has a user-declared destructor
|
||||
+ ' -Wno-missing-noreturn' // function '%s' could be declared with attribute 'noreturn'
|
||||
+ ' -Wno-old-style-cast' // use of old-style cast
|
||||
+ ' -Wno-unsafe-buffer-usage' // unsafe pointer arithmetic
|
||||
|
||||
// File Extensions
|
||||
.LibExtension = '.a'
|
||||
.ExeExtension = '.exe'
|
||||
]
|
||||
|
||||
// ToolChain
|
||||
//------------------------------------------------------------------------------
|
||||
.ToolChain_Clang_Windows =
|
||||
[
|
||||
Using( .ToolChain_Clang_Windows_Common )
|
||||
|
||||
// Compiler Options
|
||||
.Compiler = 'Compiler-Clang19'
|
||||
.CommonCompilerOptions = ' -c' // Compile only
|
||||
+ ' /Z7' // Include debug info
|
||||
|
||||
// Include paths
|
||||
+ ' -I"./"'
|
||||
+ .VSIncludePaths_ClangCl
|
||||
|
||||
// x64
|
||||
+ ' -m64'
|
||||
+ ' --target=x86_64-windows-msvc'
|
||||
|
||||
// No RTTI
|
||||
+ ' /GR-'
|
||||
|
||||
// No Exceptions
|
||||
+ ' /EHs-c-'
|
||||
|
||||
// Warnings
|
||||
+ .CommonCompilerWarningOptions
|
||||
|
||||
.CompilerOptions = ' /TP -o"%2" "%1" $CommonCompilerOptions$'
|
||||
+ .CPPVersion
|
||||
.CompilerOptionsC = ' /TC -o"%2" "%1" $CommonCompilerOptions$'
|
||||
.PCHOptions = ' /TP $CommonCompilerOptions$ "%1" /Fo"%3" /Fp"%2" /Yc"PrecompiledHeader.h"'
|
||||
+ .CPPVersion
|
||||
]
|
||||
|
||||
// ToolChain
|
||||
//------------------------------------------------------------------------------
|
||||
.ToolChain_ClangNonCL_Windows =
|
||||
[
|
||||
Using( .ToolChain_Clang_Windows_Common )
|
||||
|
||||
// Compiler Options
|
||||
.Compiler = 'Compiler-Clang19-NonCL'
|
||||
.CommonCompilerOptions = ' -c' // Compile only
|
||||
+ ' -g' // Include debug info
|
||||
|
||||
// Include paths
|
||||
+ ' "-I./"'
|
||||
|
||||
// x64
|
||||
+ ' -m64'
|
||||
+ ' --target=x86_64-windows-msvc'
|
||||
|
||||
// No RTTI
|
||||
+ ' -fno-rtti'
|
||||
|
||||
// No Exceptions
|
||||
+ ' -fno-exceptions'
|
||||
|
||||
// Warnings
|
||||
+ .CommonCompilerWarningOptions
|
||||
|
||||
.CompilerOptions = ' -x c++ -o"%2" "%1" $CommonCompilerOptions$'
|
||||
+ .CPPVersion
|
||||
.CompilerOptionsC = ' -x c -o"%2" "%1" $CommonCompilerOptions$'
|
||||
]
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user