Skip to content

Add Windows native (mingwX64) target#563

Merged
vinceglb merged 3 commits intovinceglb:mainfrom
kdroidFilter:feat/add-mingw-x64-target
Apr 18, 2026
Merged

Add Windows native (mingwX64) target#563
vinceglb merged 3 commits intovinceglb:mainfrom
kdroidFilter:feat/add-mingw-x64-target

Conversation

@kdroidFilter
Copy link
Copy Markdown
Contributor

@kdroidFilter kdroidFilter commented Apr 14, 2026

Summary

  • Add mingwX64 target to filekit-core and filekit-dialogs modules
  • filekit-core: PlatformFile implementation using kotlinx.io Path, Win32 APIs for file metadata (GetFileAttributesExW), MIME type via Windows Registry, directory resolution via SHGetKnownFolderPath with USERPROFILE fallback, Unicode-safe path resolution via GetFullPathNameW
  • filekit-dialogs: Modern COM file dialogs (IFileOpenDialog/IFileSaveDialog) via cinterop C wrappers — same approach as the JNA implementation, with FOS_PICKFOLDERS for directory selection, multi-select support, file type filters, and ShellExecuteW for default app opening
  • Win32 GUI sample app (sample/windowsNativeApp) demonstrating all FileKit APIs

Test plan

  • filekit-core:compileKotlinMingwX64 compiles
  • filekit-dialogs:compileKotlinMingwX64 compiles
  • sample:windowsNativeApp:linkReleaseExecutableMingwX64 links successfully
  • JVM tests still pass (filekit-core:jvmTest)
  • JVM compilation unaffected (filekit-core:compileKotlinJvm, filekit-dialogs:compileKotlinJvm)
  • Manual test: file picker dialog opens and returns selected file
  • Manual test: directory picker shows folder selection (FOS_PICKFOLDERS)
  • Manual test: save dialog creates file correctly
  • Manual test: files with Unicode paths (Hebrew, CJK) work

@kdroidFilter kdroidFilter marked this pull request as draft April 14, 2026 11:17
@kdroidFilter kdroidFilter marked this pull request as ready for review April 14, 2026 11:23
@kdroidFilter kdroidFilter force-pushed the feat/add-mingw-x64-target branch from 9383a76 to 3250942 Compare April 14, 2026 11:33
…alogs

Add mingwX64 target support with full platform implementations:

filekit-core:
- PlatformFile wrapping kotlinx.io Path with WindowsPath wrapper
- File metadata via Win32 GetFileAttributesExW (timestamps, size)
- MIME type detection via Windows Registry (HKEY_CLASSES_ROOT)
- Directory resolution via SHGetKnownFolderPath with USERPROFILE fallback
- Unicode-safe absolutePath via GetFullPathNameW

filekit-dialogs:
- Modern COM IFileOpenDialog/IFileSaveDialog via cinterop C wrappers
- FOS_PICKFOLDERS for directory selection
- FOS_ALLOWMULTISELECT for multi-file selection
- SHCreateItemFromParsingName for initial directory
- COMDLG_FILTERSPEC for file type filters
- ShellExecuteW for opening files with default application

sample:
- Win32 GUI sample app demonstrating all FileKit APIs
@kdroidFilter kdroidFilter force-pushed the feat/add-mingw-x64-target branch from 3250942 to 51f8a90 Compare April 14, 2026 11:38
@vinceglb vinceglb merged commit 6843c14 into vinceglb:main Apr 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants