First
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
#pragma once
|
||||
|
||||
#include "platform.h"
|
||||
|
||||
// Compiler/Linker detection
|
||||
// Possible values:
|
||||
// TOOLCHAIN:
|
||||
// - TL_TOOLCHAIN_CLANG (LLVM/CLANG)
|
||||
// - TL_TOOLCHAIN_GNU (GCC TOOLS)
|
||||
// - TL_TOOLCHAIN_MSC (Microsoft Visual Studio)
|
||||
// VERSION:
|
||||
// - TL_TOOLCHAIN_MAJOR
|
||||
// - TL_TOOLCHAIN_MINOR
|
||||
// - TL_TOOLCHAIN_REVISION
|
||||
|
||||
#if defined(__clang__)
|
||||
|
||||
// CLANG needs to be detected first because CLANG also defined GNUC or GNUG
|
||||
|
||||
# define TL_TOOLCHAIN_CLANG
|
||||
# define TL_TOOLCHAIN_MAJOR __clang_major__
|
||||
# define TL_TOOLCHAIN_MINOR __clang_minor__
|
||||
# define TL_TOOLCHAIN_REVISION __clang_patchlevel__
|
||||
|
||||
// Check for a valid toolchain version
|
||||
# if TL_TOOLCHAIN_MAJOR < 3 && TL_TOOLCHAIN_MINOR < 6
|
||||
# error "Not supported toolchain"
|
||||
# endif
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
|
||||
# define TL_TOOLCHAIN_GNU
|
||||
# define TL_TOOLCHAIN_MAJOR __GNUC__
|
||||
# define TL_TOOLCHAIN_MINOR __GNUC_MINOR__
|
||||
# define TL_TOOLCHAIN_REVISION __GNUC_PATCHLEVEL__
|
||||
|
||||
// Check for a valid toolchain version
|
||||
# if TL_TOOLCHAIN_MAJOR < 4 && TL_TOOLCHAIN_MINOR < 9
|
||||
# error "Not supported toolchain"
|
||||
# elif TL_TOOLCHAIN_MAJOR == 4 && TL_TOOLCHAIN_MINOR == 9
|
||||
# if defined(TL_PLATFORM_LINUX_FAMILY) && (TL_TOOLCHAIN_REVISION < 2)
|
||||
# error "Not supported toolchain"
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
|
||||
# define TL_TOOLCHAIN_MSC
|
||||
|
||||
# if _MSC_VER <= 1912 // VISUAL STUDIO 2017 15.5
|
||||
# define TL_TOOLCHAIN_MAJOR 14
|
||||
# define TL_TOOLCHAIN_MINOR 12
|
||||
# elif _MSC_VER <= 1913 // VISUAL STUDIO 2017 15.6
|
||||
# define TL_TOOLCHAIN_MAJOR 14
|
||||
# define TL_TOOLCHAIN_MINOR 13
|
||||
# elif _MSC_VER <= 1914 // VISUAL STUDIO 2017 15.7
|
||||
# define TL_TOOLCHAIN_MAJOR 14
|
||||
# define TL_TOOLCHAIN_MINOR 14
|
||||
# else //_MSC_VER is 1915 or higher // VISUAL STUDIO 2017 15.8
|
||||
# define TL_TOOLCHAIN_MAJOR 14
|
||||
# define TL_TOOLCHAIN_MINOR 15
|
||||
# endif
|
||||
|
||||
# define TL_TOOLCHAIN_REVISION (_MSC_FULL_VER - _MSC_VER * 100000) // Extract revision (build number)
|
||||
# define TL_TOOLCHAIN_BUILD_NUMBER _MSC_BUILD // Real MSC Revision
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Disabled warnings for VS2013:
|
||||
//
|
||||
// C4503: 'identifier' : decorated name length exceeded, name was truncated
|
||||
// From: https://msdn.microsoft.com/en-us/library/074af4b6.aspx
|
||||
// "The correctness of the program, however, is unaffected by the truncated name."
|
||||
// C4250: 'class1' : inherits 'class2::member' via dominance
|
||||
|
||||
# if TL_TOOLCHAIN_MAJOR >= 12 && TL_TOOLCHAIN_MAJOR < 15
|
||||
# pragma warning( disable : 4503)
|
||||
# pragma warning( disable : 4250)
|
||||
# endif
|
||||
|
||||
# if TL_TOOLCHAIN_MAJOR == 14
|
||||
# pragma warning( disable : 4577)
|
||||
# endif
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// Check for a valid toolchain version
|
||||
# if TL_TOOLCHAIN_MAJOR < 12
|
||||
# error "Not supported toolchain"
|
||||
# endif
|
||||
|
||||
#else
|
||||
|
||||
# error Unknown Toolchain please provide BAR team more info.
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user