diff --git a/lib/ruby_installer/build/components/03_dev_tools.rb b/lib/ruby_installer/build/components/03_dev_tools.rb index 9f400694..c5f63f25 100644 --- a/lib/ruby_installer/build/components/03_dev_tools.rb +++ b/lib/ruby_installer/build/components/03_dev_tools.rb @@ -52,6 +52,7 @@ def description 'mingw32' => PACKAGES_MINGW32, 'mingw64' => PACKAGES_MINGW64, 'ucrt64' => PACKAGES_MINGW64, + 'clang64' => PACKAGES_MINGW64, 'clangarm64' => PACKAGES_MINGW64, } diff --git a/lib/ruby_installer/build/msys2_installation.rb b/lib/ruby_installer/build/msys2_installation.rb index b26a5104..43e966f8 100644 --- a/lib/ruby_installer/build/msys2_installation.rb +++ b/lib/ruby_installer/build/msys2_installation.rb @@ -35,6 +35,7 @@ def initialize(msys_path: nil, mingwarch: nil, mingw_package_prefix: nil, ruby_b when 'mingw32' then "mingw-w64-i686" when 'mingw64' then "mingw-w64-x86_64" when 'ucrt64' then "mingw-w64-ucrt-x86_64" + when 'clang64' then "mingw-w64-clang-x86_64" when 'clangarm64' then "mingw-w64-clang-aarch64" else raise "unknown mingwarch #{@mingwarch.inspect}" end @@ -188,6 +189,12 @@ def disable_dll_search_paths vars['MSYSTEM_CHOST'] = 'x86_64-w64-mingw32' vars['MINGW_CHOST'] = vars['MSYSTEM_CHOST'] vars['MINGW_PREFIX'] = vars['MSYSTEM_PREFIX'] + when 'clang64' + vars['MSYSTEM_PREFIX'] = '/clang64' + vars['MSYSTEM_CARCH'] = 'x86_64' + vars['MSYSTEM_CHOST'] = 'x86_64-w64-mingw32' + vars['MINGW_CHOST'] = vars['MSYSTEM_CHOST'] + vars['MINGW_PREFIX'] = vars['MSYSTEM_PREFIX'] when 'clangarm64' vars['MSYSTEM_PREFIX'] = '/clangarm64' vars['MSYSTEM_CARCH'] = 'aarch64' diff --git a/lib/ruby_installer/runtime/ridk.rb b/lib/ruby_installer/runtime/ridk.rb index 4f3e8476..6e7f6d7c 100644 --- a/lib/ruby_installer/runtime/ridk.rb +++ b/lib/ruby_installer/runtime/ridk.rb @@ -54,7 +54,10 @@ def print_logo DEFAULT_COMPONENTS = %w[1 3] def install(args) - ci = ComponentsInstaller.new + if args && %w[ucrt64 mingw64 mingw32 clang64 clangarm64].include?(args[0]) + msys = Msys2Installation.new(mingwarch: args.shift) + end + ci = ComponentsInstaller.new(msys:) inst_defaults = DEFAULT_COMPONENTS if args.empty?