52 lines
1.3 KiB
Ruby
52 lines
1.3 KiB
Ruby
require_relative "options"
|
|
|
|
class OptionsForWindows < Options
|
|
def to_s
|
|
command_line(*generator_args, *to_a)
|
|
end
|
|
|
|
def graphviz_cmake_args
|
|
generator_args
|
|
end
|
|
|
|
private
|
|
|
|
def arm?
|
|
RbConfig::CONFIG["host_cpu"].to_s.downcase.match?(/\A(?:arm64|aarch64)\z/)
|
|
end
|
|
|
|
def cmake_options_output
|
|
Dir.chdir(__dir__) do
|
|
IO.popen([@cmake, "-S", "sources", "-B", "build", *generator_args, "-L"]) {|io| io.read}
|
|
end
|
|
end
|
|
|
|
def generator_args
|
|
generator = cmake_generator
|
|
["-G", generator] if generator && !generator.empty?
|
|
end
|
|
|
|
def cmake_generator
|
|
return @cmake_generator if defined?(@cmake_generator)
|
|
|
|
generator = ENV["CMAKE_GENERATOR"]
|
|
abort "CMAKE_GENERATOR=#{generator} is unsupported for mingw/ucrt Ruby" if visual_studio_generator_name?(generator)
|
|
return @cmake_generator = generator unless generator.nil? || generator.empty?
|
|
|
|
ninja = find_executable("ninja")
|
|
return @cmake_generator = "Ninja" if ninja
|
|
|
|
make = find_executable("make")
|
|
return @cmake_generator = "MSYS Makefiles" if make
|
|
|
|
mingw32_make = find_executable("mingw32-make")
|
|
return @cmake_generator = "MinGW Makefiles" if mingw32_make
|
|
|
|
@cmake_generator = nil
|
|
end
|
|
|
|
def visual_studio_generator_name?(generator)
|
|
generator && generator.start_with?("Visual Studio")
|
|
end
|
|
end
|