microsoft / microsoft/openvmm

Support building `vmfirmwareigvm_dll` on non-Windows platforms

Open
#314 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
1.9k
Forks
238
Avg merge
1d 15h
Merged PRs (30d)
100

Description

With the currently documented set of required dependencies + implemented flowey build logic, the vmfirmwareigvm_dll can only be compiled on Windows platforms.

It seems likely that, given the right set of dependencies / environment variables, it should be possible to get it compiling on other platforms (notably, via WSL2).


Alternatively, Roman suggested rewriting vmfirmwareigvm_dll to instead be a standalone tool which simply crafts a DLL file "out of thin air", using something like the object crate to build a PE executable from scratch. See https://github.com/microsoft/openvmm/pull/291#discussion_r1840799986

This is certainly an option as well, though it comes with its own set of tradeoffs and complexity spirals.

Notably: we would need to "precompile" the resources.rc file + patch it during the build (unless we wanted to try and rewrite a subset of rc.exe functionality, which seems... unwise). EDIT: Roman pointed out that x86_64-w64-mingw32-windres exists for this purpose.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the documented dependencies and the existing flowey build logic for vmfirmwareigvm_dll. Compare the non-Windows dependency/environment approach with rewriting the tool using the object crate and x86_64-w64-mingw32-windres, then define one approach whose done condition is successful compilation on a non-Windows platform.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.