<feed xmlns='http://www.w3.org/2005/Atom'>
<title>DropOut/src-tauri/icon.rc, branch @dropout/docs-v0.1.0-alpha.1</title>
<subtitle>This is a new Minecraft launcher that is currently in development. It is designed to be a modern, fast and efficient launcher. It is written in Rust. Aims to be a Reproducible Minecraft Workspace Manager.</subtitle>
<id>https://git.hydroroll.team/DropOut/atom?h=%40dropout%2Fdocs-v0.1.0-alpha.1</id>
<link rel='self' href='https://git.hydroroll.team/DropOut/atom?h=%40dropout%2Fdocs-v0.1.0-alpha.1'/>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/'/>
<updated>2026-02-15T08:34:35Z</updated>
<entry>
<title>Fix Windows MinGW linker error with COFF resource compilation (#96)</title>
<updated>2026-02-15T08:34:35Z</updated>
<author>
<name>Copilot</name>
<email>198982749+Copilot@users.noreply.github.com</email>
</author>
<published>2026-02-15T08:34:35Z</published>
<link rel='alternate' type='text/html' href='https://git.hydroroll.team/DropOut/commit/?id=9c1dda2652f7abc2a562d6c1b513d5b6915167ad'/>
<id>urn:sha1:9c1dda2652f7abc2a562d6c1b513d5b6915167ad</id>
<content type='text'>
# Description

MinGW linker fails on `resource.lib` because `tauri-build` generates
MSVC-format resources. MinGW requires COFF format. This PR adds
conditional resource compilation using `embed-resource` for GNU targets.

## Type of Change

- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] Documentation update
- [ ] UI/UX improvement
- [ ] Performance improvement
- [ ] Code refactoring (no functional changes)
- [ ] Configuration change
- [ ] Test addition or update

## LLM-Generated Code Disclosure

- [x] This PR contains LLM-generated code, and I **provide** quality
assurance
- [ ] This PR contains LLM-generated code, and I **do not provide**
quality assurance
- [ ] This PR does not contain LLM-generated code

## Related Issues

Fixes the Windows x86_64-pc-windows-gnu build failure in CI (Job ID:
63620685213)

## Changes Made

### Backend (Rust)

- N/A

### Frontend (Svelte)

- N/A

### Configuration

- **src-tauri/Cargo.toml**: Added `embed-resource = "2.4"` as
target-specific build dependency for `cfg(all(windows, target_env =
"gnu"))`
- **src-tauri/build.rs**: Added conditional resource compilation - calls
`embed_resource::compile()` for MinGW, preserves `tauri_build::build()`
for all targets
- **src-tauri/icon.rc**: Created Windows resource file referencing
`icons/icon.ico`

**Key implementation**:
```rust
fn main() {
    #[cfg(all(windows, target_env = "gnu"))]
    {
        embed_resource::compile("icon.rc", embed_resource::NONE);
    }
    tauri_build::build()
}
```

**Impact**: MSVC builds unchanged, Linux/macOS unaffected (dependency
not loaded), MinGW builds now generate COFF-compatible resources.

## Testing

### Test Environment

- **OS**: Ubuntu 22.04 (Linux validation)
- **DropOut Version**: 0.2.0-alpha.1
- **Minecraft Version Tested**: N/A (build-only fix)
- **Mod Loader**: N/A

### Test Cases

- [ ] Tested on Windows
- [ ] Tested on macOS
- [x] Tested on Linux
- [ ] Tested with vanilla Minecraft
- [ ] Tested with Fabric
- [ ] Tested with Forge
- [ ] Tested game launch
- [ ] Tested authentication flow
- [ ] Tested Java detection/download

### Steps to Test

1. Run `cargo check` on Linux (verified - passes)
2. CI validation pending: `semifold-ci.yaml` "Windows x86_64 (GNU)" job
should complete without linker errors
3. Manual Windows MinGW build verification recommended

## Checklist

### Code Quality

- [x] My code follows the project's style guidelines
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] My changes generate no new warnings or errors

### Testing Verification

- [x] I have tested my changes locally
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [x] New and existing unit tests pass locally with my changes
- [x] I have tested on at least one target platform

### Documentation

- [x] I have updated the documentation accordingly
- [ ] I have updated the README if needed
- [x] I have added/updated code comments where necessary

### Dependencies

- [x] I have checked that no unnecessary dependencies were added
- [x] All new dependencies are properly documented
- [x] `Cargo.lock` and/or `pnpm-lock.yaml` are updated (if dependencies
changed)

## Screenshots / Videos

N/A - build configuration change only

## Additional Notes

- Target-specific dependency prevents unnecessary bloat on non-Windows
platforms
- `embed-resource` generates COFF format compatible with
`x86_64-w64-mingw32-gcc`
- No runtime code changes - purely build-time fix

## Breaking Changes

None. Fully backward compatible.

---

**For Maintainers:**

- [ ] Code review completed
- [ ] CI checks passing
- [ ] Ready to merge

&lt;!-- START COPILOT ORIGINAL PROMPT --&gt;



&lt;details&gt;

&lt;summary&gt;Original prompt&lt;/summary&gt;

&gt; ## Problem
&gt; 
&gt; The Windows x86_64-pc-windows-gnu build is failing in the CI/CD
pipeline with a linker error:
&gt; 
&gt; ```
&gt; error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
&gt; note:
D:\a\DropOut\DropOut\target\x86_64-pc-windows-gnu\release\build\dropout-d2b2a5095bbadd51\out\resource.lib:
file not recognized: file format not recognized
&gt; ```
&gt; 
&gt; This occurs because `tauri-build` generates `resource.lib` in a format
incompatible with the MinGW (GNU) toolchain. The file is likely being
created in MSVC format instead of the COFF format required by MinGW.
&gt; 
&gt; **Failing Job:** https://github.com/HydroRoll-Team/DropOut/actions
(Job ID: 63620685213)
&gt; **Commit:** e6eb1bd0111d40b3b1fd39fafd583ce5dbf30f03
&gt; **Target:** x86_64-pc-windows-gnu
&gt; 
&gt; ## Solution
&gt; 
&gt; Update the `build.rs` file to conditionally use `embed-resource` crate
when building for the GNU toolchain, which properly generates
MinGW-compatible resource files.
&gt; 
&gt; ### Changes Required
&gt; 
&gt; 1. **Update `src-tauri/Cargo.toml`**: Add `embed-resource` as a build
dependency for Windows GNU targets
&gt; 2. **Update `src-tauri/build.rs`**: Implement conditional resource
compilation:
&gt;    - Use `embed-resource` for `x86_64-pc-windows-gnu` target
&gt;    - Continue using default `tauri-build` for MSVC targets
&gt; 
&gt; ### Implementation Details
&gt; 
&gt; **src-tauri/Cargo.toml** - Add to `[build-dependencies]`:
&gt; ```toml
&gt; [build-dependencies]
&gt; tauri-build = { version = "2.0", features = [] }
&gt; embed-resource = "2.4"
&gt; ```
&gt; 
&gt; **src-tauri/build.rs** - Replace current content:
&gt; ```rust
&gt; fn main() {
&gt; // For MinGW targets, use embed-resource to generate proper COFF
format
&gt;     #[cfg(all(windows, target_env = "gnu"))]
&gt;     {
&gt;         embed_resource::compile("icon.rc", embed_resource::NONE);
&gt;     }
&gt;     
&gt;     tauri_build::build()
&gt; }
&gt; ```
&gt; 
&gt; If `icon.rc` doesn't exist, create **src-tauri/icon.rc**:
&gt; ```rc
&gt; 1 ICON "icons/icon.ico"
&gt; ```
&gt; 
&gt; ### Testing
&gt; 
&gt; After this fix:
&gt; - Windows MSVC builds should continue working as before
&gt; - Windows GNU (MinGW) builds should successfully link without the
"file format not recognized" error
&gt; - The generated resource.lib will be in COFF format compatible with
`x86_64-w64-mingw32-gcc`
&gt; 
&gt; ### References
&gt; 
&gt; - Tauri issue tracker (similar issues):
https://github.com/tauri-apps/tauri/issues
&gt; - embed-resource crate: https://crates.io/crates/embed-resource
&gt; - MinGW resource compilation:
https://sourceforge.net/p/mingw-w64/wiki2/windres/
&gt; 


&lt;/details&gt;



&lt;!-- START COPILOT CODING AGENT SUFFIX --&gt;

*This pull request was created from Copilot chat.*
&gt;

&lt;!-- START COPILOT CODING AGENT TIPS --&gt;
---

✨ Let Copilot coding agent [set things up for
you](https://github.com/HydroRoll-Team/DropOut/issues/new?title=✨+Set+up+Copilot+instructions&amp;body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&amp;assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] &lt;198982749+Copilot@users.noreply.github.com&gt;
Co-authored-by: HsiangNianian &lt;44714368+HsiangNianian@users.noreply.github.com&gt;</content>
</entry>
</feed>
