diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/external_dependencies/openmpt-trunk/mptrack/BuildVariants.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/mptrack/BuildVariants.cpp')
-rw-r--r-- | Src/external_dependencies/openmpt-trunk/mptrack/BuildVariants.cpp | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/mptrack/BuildVariants.cpp b/Src/external_dependencies/openmpt-trunk/mptrack/BuildVariants.cpp new file mode 100644 index 00000000..74274482 --- /dev/null +++ b/Src/external_dependencies/openmpt-trunk/mptrack/BuildVariants.cpp @@ -0,0 +1,171 @@ +/* + * BuildVariants.cpp + * ----------------- + * Purpose: Handling of various OpenMPT build variants. + * Notes : (currently none) + * Authors: OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. + */ + +#include "stdafx.h" +#include "BuildVariants.h" +#include "../common/version.h" +#include "../misc/mptOS.h" +#include "../misc/mptCPU.h" +#include "Mptrack.h" + + +OPENMPT_NAMESPACE_BEGIN + + +bool BuildVariants::IsKnownSystem() +{ + return false + || mpt::OS::Windows::IsOriginal() + || (mpt::OS::Windows::IsWine() && theApp.GetWineVersion()->Version().IsValid()) + ; +} + + +BuildVariants::Variants BuildVariants::GetBuildVariant() +{ +#if defined(MPT_BUILD_RETRO) + return Retro; +#else +#if defined(_WIN32_WINNT) +#if (_WIN32_WINNT >= 0x0A00) // Windows 10 + return Standard; +#else + return Legacy; +#endif +#else + return Unknown; +#endif +#endif +} + + +mpt::ustring BuildVariants::GetBuildVariantName(BuildVariants::Variants variant) +{ + mpt::ustring result; + switch(variant) + { + case Standard: + result = U_("Standard"); + break; + case Legacy: + result = U_("Legacy"); + break; + case Retro: + result = U_("Retro"); + break; + case Unknown: + result = U_("Unknown"); + break; + } + return result; +} + + +mpt::ustring BuildVariants::GetBuildVariantDescription(BuildVariants::Variants variant) +{ + mpt::ustring result; + switch(variant) + { + case Standard: + result = U_(""); + break; + case Legacy: + result = U_(""); + break; + case Retro: + result = U_(" RETRO"); + break; + case Unknown: + result = U_(""); + break; + } + return result; +} + + +mpt::ustring BuildVariants::GuessCurrentBuildName() +{ + if(GetBuildVariant() == Unknown) + { + return mpt::ustring(); + } + if(mpt::arch_bits == 64) + { + if(GetBuildVariant() == Standard) + { + return U_("win64"); + } else + { + return U_("win64old"); + } + } else if(mpt::arch_bits == 32) + { + if(GetBuildVariant() == Standard) + { + return U_("win32"); + } else + { + return U_("win32old"); + } + } else + { + return mpt::ustring(); + } +} + + +bool BuildVariants::ProcessorCanRunCurrentBuild() +{ +#ifdef MPT_ENABLE_ARCH_INTRINSICS + if((CPU::Info::Get().AvailableFeatures & CPU::GetMinimumFeatures()) != CPU::GetMinimumFeatures()) + { + return false; + } +#endif // MPT_ENABLE_ARCH_INTRINSICS + return true; +} + + +bool BuildVariants::SystemCanRunCurrentBuild() +{ + if(mpt::OS::Windows::HostCanRun(mpt::OS::Windows::GetHostArchitecture(), mpt::OS::Windows::GetProcessArchitecture()) == mpt::OS::Windows::EmulationLevel::NA) + { + return false; + } +#ifdef MPT_ENABLE_ARCH_INTRINSICS + if((CPU::Info::Get().AvailableFeatures & CPU::GetMinimumFeatures()) != CPU::GetMinimumFeatures()) + { + return false; + } +#endif // MPT_ENABLE_ARCH_INTRINSICS + if(IsKnownSystem()) + { + if(mpt::OS::Windows::IsOriginal()) + { + if(mpt::OS::Windows::Version::Current().IsBefore(mpt::OS::Windows::Version::GetMinimumKernelLevel())) + { + return false; + } + if(mpt::OS::Windows::Version::Current().IsBefore(mpt::OS::Windows::Version::GetMinimumAPILevel())) + { + return false; + } + } else if(mpt::OS::Windows::IsWine()) + { + if(theApp.GetWineVersion()->Version().IsBefore(mpt::OS::Wine::GetMinimumWineVersion())) + { + return false; + } + } + } + return true; +} + + +OPENMPT_NAMESPACE_END |