module RbSys::Mkmf

def create_rust_makefile(target, srcprefix = nil)

def create_rust_makefile(target, srcprefix = nil)
  if target.include?("/")
    target_prefix, target = File.split(target)
    target_prefix[0, 0] = "/"
  else
    target_prefix = ""
  end
  spec = Struct.new(:name, :metadata).new(target, {})
  builder = Gem::Ext::CargoBuilder.new(spec)
  srcprefix ||= "$(srcdir)/#{srcprefix}".chomp("/")
  RbConfig.expand(srcdir = srcprefix.dup)
  # rubocop:disable Style/GlobalVars
  make_install = <<~MAKE
    target_prefix = #{target_prefix}
    CARGO_PROFILE = release
    CLEANLIBS = $(RUSTLIB) $(DLLIB)
    DISTCLEANDIRS = target/
    RUBYARCHDIR   = $(sitearchdir)$(target_prefix)
    RUSTLIB = #{dllib_path(builder)}
    TARGET = #{target}
    DLLIB = $(TARGET).#{RbConfig::CONFIG["DLEXT"]}
    #{base_makefile(srcdir)}
    #{env_vars(builder)}
    FORCE: ;
    $(DLLIB): FORCE
    \t#{cargo_command(srcdir, builder)}
    \t$(COPY) "$(RUSTLIB)" $@
    install: $(DLLIB)
    \t$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
    all: #{$extout ? "install" : "$(DLLIB)"}
  MAKE
  File.write("Makefile", make_install)
end