From c30c99740dd39ad4b83f7da1e9c097c69325e96c Mon Sep 17 00:00:00 2001 From: memsharded Date: Thu, 17 Mar 2022 12:18:00 +0100 Subject: [PATCH 1/4] adding some support for older msvc versions --- conan/tools/cmake/toolchain/blocks.py | 5 ++-- conan/tools/microsoft/toolchain.py | 8 ++---- conan/tools/microsoft/visual.py | 14 ++++++++++- conans/client/conf/__init__.py | 4 +-- .../tools/cmake/test_cmaketoolchain.py | 25 +++++++++++++++++++ 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/conan/tools/cmake/toolchain/blocks.py b/conan/tools/cmake/toolchain/blocks.py index 9abe6ef6632..052066a2af2 100644 --- a/conan/tools/cmake/toolchain/blocks.py +++ b/conan/tools/cmake/toolchain/blocks.py @@ -12,7 +12,7 @@ from conan.tools.cmake.utils import is_multi_configuration from conan.tools.build.cross_building import cross_building from conan.tools.intel import IntelCC -from conan.tools.microsoft.visual import is_msvc +from conan.tools.microsoft.visual import is_msvc, msvc_version_to_toolset_version from conans.errors import ConanException from conans.util.files import load @@ -640,7 +640,8 @@ def _get_toolset(self, generator): # The equivalent of compiler 19.26 is toolset 14.26 return "version=14.{}{}".format(compiler_version[-1], compiler_update) else: - return "v14{}".format(compiler_version[-1]) + return msvc_version_to_toolset_version(compiler_version) + elif compiler == "clang": if generator and "Visual" in generator: if "Visual Studio 16" in generator: diff --git a/conan/tools/microsoft/toolchain.py b/conan/tools/microsoft/toolchain.py index 0b0a509dcb3..0d3855e27dc 100644 --- a/conan/tools/microsoft/toolchain.py +++ b/conan/tools/microsoft/toolchain.py @@ -5,7 +5,7 @@ from conan.tools._check_build_profile import check_using_build_profile from conan.tools.build import build_jobs from conan.tools.intel.intel_cc import IntelCC -from conan.tools.microsoft.visual import VCVars +from conan.tools.microsoft.visual import VCVars, msvc_version_to_toolset_version from conans.errors import ConanException from conans.util.files import save, load @@ -50,11 +50,7 @@ def _msvs_toolset(conanfile): compiler = settings.get_safe("compiler") compiler_version = settings.get_safe("compiler.version") if compiler == "msvc": - toolsets = {'190': 'v140', # TODO: This is common to CMake, refactor - '191': 'v141', - '192': 'v142', - "193": 'v143'} - return toolsets[compiler_version] + return msvc_version_to_toolset_version(compiler_version) if compiler == "intel": compiler_version = compiler_version if "." in compiler_version else \ "%s.0" % compiler_version diff --git a/conan/tools/microsoft/visual.py b/conan/tools/microsoft/visual.py index 109ec6df913..ba8b2defb41 100644 --- a/conan/tools/microsoft/visual.py +++ b/conan/tools/microsoft/visual.py @@ -8,13 +8,25 @@ def msvc_version_to_vs_ide_version(version): - _visuals = {'190': '14', + _visuals = {'170': '11', + '180': '12', + '190': '14', '191': '15', '192': '16', '193': '17'} return _visuals[str(version)] +def msvc_version_to_toolset_version(version): + toolsets = {'170': 'v110', + '180': 'v120', + '190': 'v140', + '191': 'v141', + '192': 'v142', + "193": 'v143'} + return toolsets[str(version)] + + class VCVars: def __init__(self, conanfile): self._conanfile = conanfile diff --git a/conans/client/conf/__init__.py b/conans/client/conf/__init__.py index a0c5bb8c678..5a84164a8da 100644 --- a/conans/client/conf/__init__.py +++ b/conans/client/conf/__init__.py @@ -104,11 +104,11 @@ llvm, ClangCL, v143] cppstd: [None, 14, 17, 20, 23] msvc: - version: [190, 191, 192, 193] + version: [170, 180, 190, 191, 192, 193] update: [None, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] runtime: [static, dynamic] runtime_type: [Debug, Release] - cppstd: [14, 17, 20, 23] + cppstd: [98, 14, 17, 20, 23] clang: version: ["3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "4.0", "5.0", "6.0", "7.0", "7.1", diff --git a/conans/test/unittests/tools/cmake/test_cmaketoolchain.py b/conans/test/unittests/tools/cmake/test_cmaketoolchain.py index 22e4d3f8c08..10dd21bb405 100644 --- a/conans/test/unittests/tools/cmake/test_cmaketoolchain.py +++ b/conans/test/unittests/tools/cmake/test_cmaketoolchain.py @@ -180,6 +180,31 @@ def test_toolset(conanfile_msvc): assert 'CMAKE_CXX_STANDARD 20' in toolchain.content +def test_older_msvc_toolset(): + c = ConanFile(Mock(), None) + c.settings = "os", "compiler", "build_type", "arch" + c.initialize(Settings({"os": ["Windows"], + "compiler": {"msvc": {"version": ["170"], "update": [None], + "cppstd": ["98"]}}, + "build_type": ["Release"], + "arch": ["x86"]}), EnvValues()) + c.settings.build_type = "Release" + c.settings.arch = "x86" + c.settings.compiler = "msvc" + c.settings.compiler.version = "170" + c.settings.compiler.cppstd = "98" + c.settings.os = "Windows" + c.conf = Conf() + c.folders.set_base_generators(".") + c._conan_node = Mock() + c._conan_node.dependencies = [] + toolchain = CMakeToolchain(c) + assert 'CMAKE_GENERATOR_TOOLSET "v110"' in toolchain.content + assert 'Visual Studio 11 2012' in toolchain.generator + # As by the CMake docs, this has no effect for VS < 2015 + assert 'CMAKE_CXX_STANDARD 98' in toolchain.content + + @pytest.fixture def conanfile_linux(): c = ConanFile(Mock(), None) From b59b140944b3ae3aad736dfeea963c79861d8745 Mon Sep 17 00:00:00 2001 From: memsharded Date: Thu, 17 Mar 2022 13:07:50 +0100 Subject: [PATCH 2/4] fix test --- conans/client/migrations_settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conans/client/migrations_settings.py b/conans/client/migrations_settings.py index cded91a8fa8..b64ca082995 100644 --- a/conans/client/migrations_settings.py +++ b/conans/client/migrations_settings.py @@ -3345,11 +3345,11 @@ llvm, ClangCL, v143] cppstd: [None, 14, 17, 20, 23] msvc: - version: [190, 191, 192, 193] + version: [170, 180, 190, 191, 192, 193] update: [None, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] runtime: [static, dynamic] runtime_type: [Debug, Release] - cppstd: [14, 17, 20, 23] + cppstd: [98, 14, 17, 20, 23] clang: version: ["3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "4.0", "5.0", "6.0", "7.0", "7.1", From 9550b66b96018e95a8b01099b5f46e49b219f0aa Mon Sep 17 00:00:00 2001 From: memsharded Date: Fri, 18 Mar 2022 12:07:53 +0100 Subject: [PATCH 3/4] adding msvc toolset vXXX_xp support --- conan/tools/cmake/toolchain/blocks.py | 4 +- conan/tools/microsoft/toolchain.py | 3 + conans/client/conf/__init__.py | 1 + conans/client/migrations_settings.py | 148 +++++++++++++++++- .../tools/cmake/test_cmaketoolchain.py | 26 +++ .../unittests/tools/microsoft/test_msbuild.py | 6 +- 6 files changed, 185 insertions(+), 3 deletions(-) diff --git a/conan/tools/cmake/toolchain/blocks.py b/conan/tools/cmake/toolchain/blocks.py index 052066a2af2..fc383bcddab 100644 --- a/conan/tools/cmake/toolchain/blocks.py +++ b/conan/tools/cmake/toolchain/blocks.py @@ -634,6 +634,9 @@ def _get_toolset(self, generator): elif compiler == "intel-cc": return IntelCC(self._conanfile).ms_toolset elif compiler == "msvc": + subs_toolset = settings.get_safe("compiler.toolset") + if subs_toolset: + return subs_toolset compiler_version = str(settings.compiler.version) compiler_update = str(settings.compiler.update) if compiler_update != "None": # It is full one(19.28), not generic 19.2X @@ -641,7 +644,6 @@ def _get_toolset(self, generator): return "version=14.{}{}".format(compiler_version[-1], compiler_update) else: return msvc_version_to_toolset_version(compiler_version) - elif compiler == "clang": if generator and "Visual" in generator: if "Visual Studio 16" in generator: diff --git a/conan/tools/microsoft/toolchain.py b/conan/tools/microsoft/toolchain.py index 0d3855e27dc..128797a61b7 100644 --- a/conan/tools/microsoft/toolchain.py +++ b/conan/tools/microsoft/toolchain.py @@ -50,6 +50,9 @@ def _msvs_toolset(conanfile): compiler = settings.get_safe("compiler") compiler_version = settings.get_safe("compiler.version") if compiler == "msvc": + subs_toolset = settings.get_safe("compiler.toolset") + if subs_toolset: + return subs_toolset return msvc_version_to_toolset_version(compiler_version) if compiler == "intel": compiler_version = compiler_version if "." in compiler_version else \ diff --git a/conans/client/conf/__init__.py b/conans/client/conf/__init__.py index 7d116393c3a..979e4baf066 100644 --- a/conans/client/conf/__init__.py +++ b/conans/client/conf/__init__.py @@ -110,6 +110,7 @@ runtime: [static, dynamic] runtime_type: [Debug, Release] cppstd: [98, 14, 17, 20, 23] + toolset: [None, v110_xp, v120_xp, v140_xp, v141_xp] clang: version: ["3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "4.0", "5.0", "6.0", "7.0", "7.1", diff --git a/conans/client/migrations_settings.py b/conans/client/migrations_settings.py index dceece7a7db..7931278a55c 100644 --- a/conans/client/migrations_settings.py +++ b/conans/client/migrations_settings.py @@ -3400,4 +3400,150 @@ cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20, 23, gnu23] # Deprecated, use compiler.cppstd """ -settings_1_47_0 = settings_1_46_1 +settings_1_47_0 = """ +# Only for cross building, 'os_build/arch_build' is the system that runs Conan +os_build: [Windows, WindowsStore, Linux, Macos, FreeBSD, SunOS, AIX, VxWorks] +arch_build: [x86, x86_64, ppc32be, ppc32, ppc64le, ppc64, armv5el, armv5hf, armv6, armv7, armv7hf, armv7s, armv7k, armv8, armv8_32, armv8.3, sparc, sparcv9, mips, mips64, avr, s390, s390x, sh4le, e2k-v2, e2k-v3, e2k-v4, e2k-v5, e2k-v6, e2k-v7] + +# Only for building cross compilation tools, 'os_target/arch_target' is the system for +# which the tools generate code +os_target: [Windows, Linux, Macos, Android, iOS, watchOS, tvOS, FreeBSD, SunOS, AIX, Arduino, Neutrino] +arch_target: [x86, x86_64, ppc32be, ppc32, ppc64le, ppc64, armv5el, armv5hf, armv6, armv7, armv7hf, armv7s, armv7k, armv8, armv8_32, armv8.3, sparc, sparcv9, mips, mips64, avr, s390, s390x, asm.js, wasm, sh4le, e2k-v2, e2k-v3, e2k-v4, e2k-v5, e2k-v6, e2k-v7, xtensalx6, xtensalx106] + +# Rest of the settings are "host" settings: +# - For native building/cross building: Where the library/program will run. +# - For building cross compilation tools: Where the cross compiler will run. +os: + Windows: + subsystem: [None, cygwin, msys, msys2, wsl] + WindowsStore: + version: ["8.1", "10.0"] + WindowsCE: + platform: ANY + version: ["5.0", "6.0", "7.0", "8.0"] + Linux: + Macos: + version: [None, "10.6", "10.7", "10.8", "10.9", "10.10", "10.11", "10.12", "10.13", "10.14", "10.15", "11.0", "12.0", "13.0"] + sdk: [None, "macosx"] + sdk_version: [None, "10.13", "10.14", "10.15", "11.0", "11.1", "11.3", "12.0", "12.1", "12.3"] + subsystem: [None, catalyst] + Android: + api_level: ANY + iOS: + version: ["7.0", "7.1", "8.0", "8.1", "8.2", "8.3", "9.0", "9.1", "9.2", "9.3", "10.0", "10.1", "10.2", "10.3", + "11.0", "11.1", "11.2", "11.3", "11.4", "12.0", "12.1", "12.2", "12.3", "12.4", + "13.0", "13.1", "13.2", "13.3", "13.4", "13.5", "13.6", "13.7", + "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "14.6", "14.7", "14.8", + "15.0", "15.1", "15.2", "15.3", "15.4"] + sdk: [None, "iphoneos", "iphonesimulator"] + sdk_version: [None, "11.3", "11.4", "12.0", "12.1", "12.2", "12.4", + "13.0", "13.1", "13.2", "13.4", "13.5", "13.6", "13.7", + "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "15.0", "15.2", "15.4"] + watchOS: + version: ["4.0", "4.1", "4.2", "4.3", "5.0", "5.1", "5.2", "5.3", "6.0", "6.1", "6.2", + "7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", "8.0", "8.1", "8.3", "8.4", "8.5"] + sdk: [None, "watchos", "watchsimulator"] + sdk_version: [None, "4.3", "5.0", "5.1", "5.2", "5.3", "6.0", "6.1", "6.2", + "7.0", "7.1", "7.2", "7.4", "8.0", "8.0.1", "8.3", "8.5"] + tvOS: + version: ["11.0", "11.1", "11.2", "11.3", "11.4", "12.0", "12.1", "12.2", "12.3", "12.4", + "13.0", "13.2", "13.3", "13.4", "14.0", "14.2", "14.3", "14.4", "14.5", "14.6", "14.7", + "15.0", "15.1", "15.2", "15.3", "15.4"] + sdk: [None, "appletvos", "appletvsimulator"] + sdk_version: [None, "11.3", "11.4", "12.0", "12.1", "12.2", "12.4", + "13.0", "13.1", "13.2", "13.4", "14.0", "14.2", "14.3", "14.5", "15.0", "15.2", "15.4"] + FreeBSD: + SunOS: + AIX: + Arduino: + board: ANY + Emscripten: + Neutrino: + version: ["6.4", "6.5", "6.6", "7.0", "7.1"] + baremetal: + VxWorks: + version: ["7"] +arch: [x86, x86_64, ppc32be, ppc32, ppc64le, ppc64, armv4, armv4i, armv5el, armv5hf, armv6, armv7, armv7hf, armv7s, armv7k, armv8, armv8_32, armv8.3, sparc, sparcv9, mips, mips64, avr, s390, s390x, asm.js, wasm, sh4le, e2k-v2, e2k-v3, e2k-v4, e2k-v5, e2k-v6, e2k-v7, xtensalx6, xtensalx106] +compiler: + sun-cc: + version: ["5.10", "5.11", "5.12", "5.13", "5.14", "5.15"] + threads: [None, posix] + libcxx: [libCstd, libstdcxx, libstlport, libstdc++] + gcc: &gcc + version: ["4.1", "4.4", "4.5", "4.6", "4.7", "4.8", "4.9", + "5", "5.1", "5.2", "5.3", "5.4", "5.5", + "6", "6.1", "6.2", "6.3", "6.4", "6.5", + "7", "7.1", "7.2", "7.3", "7.4", "7.5", + "8", "8.1", "8.2", "8.3", "8.4", + "9", "9.1", "9.2", "9.3", + "10", "10.1", "10.2", "10.3", + "11", "11.1", "11.2", + "12"] + libcxx: [libstdc++, libstdc++11] + threads: [None, posix, win32] # Windows MinGW + exception: [None, dwarf2, sjlj, seh] # Windows MinGW + cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20, 23, gnu23] + Visual Studio: &visual_studio + runtime: [MD, MT, MTd, MDd] + version: ["8", "9", "10", "11", "12", "14", "15", "16", "17"] + toolset: [None, v90, v100, v110, v110_xp, v120, v120_xp, + v140, v140_xp, v140_clang_c2, LLVM-vs2012, LLVM-vs2012_xp, + LLVM-vs2013, LLVM-vs2013_xp, LLVM-vs2014, LLVM-vs2014_xp, + LLVM-vs2017, LLVM-vs2017_xp, v141, v141_xp, v141_clang_c2, v142, + llvm, ClangCL, v143] + cppstd: [None, 14, 17, 20, 23] + msvc: + version: [170, 180, 190, 191, 192, 193] + update: [None, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + runtime: [static, dynamic] + runtime_type: [Debug, Release] + cppstd: [98, 14, 17, 20, 23] + toolset: [None, v110_xp, v120_xp, v140_xp, v141_xp] + clang: + version: ["3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "4.0", + "5.0", "6.0", "7.0", "7.1", + "8", "9", "10", "11", "12", "13", "14", "15"] + libcxx: [None, libstdc++, libstdc++11, libc++, c++_shared, c++_static] + cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20, 23, gnu23] + runtime: [None, MD, MT, MTd, MDd] + apple-clang: &apple_clang + version: ["5.0", "5.1", "6.0", "6.1", "7.0", "7.3", "8.0", "8.1", "9.0", "9.1", "10.0", "11.0", "12.0", "13", "13.0", "13.1"] + libcxx: [libstdc++, libc++] + cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20] + intel: + version: ["11", "12", "13", "14", "15", "16", "17", "18", "19", "19.1"] + update: [None, ANY] + base: + gcc: + <<: *gcc + threads: [None] + exception: [None] + Visual Studio: + <<: *visual_studio + apple-clang: + <<: *apple_clang + intel-cc: + version: ["2021.1", "2021.2", "2021.3"] + update: [None, ANY] + mode: ["icx", "classic", "dpcpp"] + libcxx: [None, libstdc++, libstdc++11, libc++] + cppstd: [None, 98, gnu98, 03, gnu03, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20, 23, gnu23] + runtime: [None, static, dynamic] + runtime_type: [None, Debug, Release] + qcc: + version: ["4.4", "5.4", "8.3"] + libcxx: [cxx, gpp, cpp, cpp-ne, accp, acpp-ne, ecpp, ecpp-ne] + cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17] + mcst-lcc: + version: ["1.19", "1.20", "1.21", "1.22", "1.23", "1.24", "1.25"] + base: + gcc: + <<: *gcc + threads: [None] + exceptions: [None] + +build_type: [None, Debug, Release, RelWithDebInfo, MinSizeRel] + + +cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20, 23, gnu23] # Deprecated, use compiler.cppstd +""" diff --git a/conans/test/unittests/tools/cmake/test_cmaketoolchain.py b/conans/test/unittests/tools/cmake/test_cmaketoolchain.py index 10dd21bb405..ddc5baf759f 100644 --- a/conans/test/unittests/tools/cmake/test_cmaketoolchain.py +++ b/conans/test/unittests/tools/cmake/test_cmaketoolchain.py @@ -205,6 +205,32 @@ def test_older_msvc_toolset(): assert 'CMAKE_CXX_STANDARD 98' in toolchain.content +def test_msvc_xp_toolsets(): + c = ConanFile(Mock(), None) + c.settings = "os", "compiler", "build_type", "arch" + c.initialize(Settings({"os": ["Windows"], + "compiler": {"msvc": {"version": ["170"], "update": [None], + "cppstd": ["98"], "toolset": [None, "v110_xp"]}}, + "build_type": ["Release"], + "arch": ["x86"]}), EnvValues()) + c.settings.build_type = "Release" + c.settings.arch = "x86" + c.settings.compiler = "msvc" + c.settings.compiler.version = "170" + c.settings.compiler.toolset = "v110_xp" + c.settings.compiler.cppstd = "98" + c.settings.os = "Windows" + c.conf = Conf() + c.folders.set_base_generators(".") + c._conan_node = Mock() + c._conan_node.dependencies = [] + toolchain = CMakeToolchain(c) + assert 'CMAKE_GENERATOR_TOOLSET "v110_xp"' in toolchain.content + assert 'Visual Studio 11 2012' in toolchain.generator + # As by the CMake docs, this has no effect for VS < 2015 + assert 'CMAKE_CXX_STANDARD 98' in toolchain.content + + @pytest.fixture def conanfile_linux(): c = ConanFile(Mock(), None) diff --git a/conans/test/unittests/tools/microsoft/test_msbuild.py b/conans/test/unittests/tools/microsoft/test_msbuild.py index 14bfbb02a47..8408ff4cda1 100644 --- a/conans/test/unittests/tools/microsoft/test_msbuild.py +++ b/conans/test/unittests/tools/microsoft/test_msbuild.py @@ -36,7 +36,7 @@ def test_msbuild_cpu_count(): def test_msbuild_toolset(): settings = Settings({"build_type": ["Release"], - "compiler": {"msvc": {"version": ["193"]}}, + "compiler": {"msvc": {"version": ["193"], "toolset": [None, "v142_xp"]}}, "os": ["Windows"], "arch": ["x86_64"]}) conanfile = ConanFile(Mock(), None) @@ -51,6 +51,10 @@ def test_msbuild_toolset(): msbuild = MSBuildToolchain(conanfile) assert 'v143' in msbuild.toolset + conanfile.settings.compiler.toolset = "v142_xp" + msbuild = MSBuildToolchain(conanfile) + assert 'v142_xp' in msbuild.toolset + @pytest.mark.parametrize("mode,expected_toolset", [ ("icx", "Intel C++ Compiler 2021"), From 66018f6e16eba67d3315006baf910a9dde725419 Mon Sep 17 00:00:00 2001 From: memsharded Date: Fri, 18 Mar 2022 16:25:24 +0100 Subject: [PATCH 4/4] fixed migration --- conans/client/migrations_settings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/conans/client/migrations_settings.py b/conans/client/migrations_settings.py index 557118b7e39..f9a12dd4333 100644 --- a/conans/client/migrations_settings.py +++ b/conans/client/migrations_settings.py @@ -3346,11 +3346,11 @@ llvm, ClangCL, v143] cppstd: [None, 14, 17, 20, 23] msvc: - version: [170, 180, 190, 191, 192, 193] + version: [190, 191, 192, 193] update: [None, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] runtime: [static, dynamic] runtime_type: [Debug, Release] - cppstd: [98, 14, 17, 20, 23] + cppstd: [14, 17, 20, 23] clang: version: ["3.3", "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "4.0", "5.0", "6.0", "7.0", "7.1", @@ -3402,7 +3402,7 @@ settings_1_46_2 = settings_1_46_1 -settings_1_47_0 = settings_1_47_0 = """ +settings_1_47_0 = """ # Only for cross building, 'os_build/arch_build' is the system that runs Conan os_build: [Windows, WindowsStore, Linux, Macos, FreeBSD, SunOS, AIX, VxWorks] arch_build: [x86, x86_64, ppc32be, ppc32, ppc64le, ppc64, armv5el, armv5hf, armv6, armv7, armv7hf, armv7s, armv7k, armv8, armv8_32, armv8.3, sparc, sparcv9, mips, mips64, avr, s390, s390x, sh4le, e2k-v2, e2k-v3, e2k-v4, e2k-v5, e2k-v6, e2k-v7]