armdevvel / mxe-SHARED

MXE (M cross environment) for ARM32 Windows development (shared libraries)
Other
6 stars 3 forks source link

libc/POSIX compatibility roadmap #48

Open treeswift opened 8 months ago

treeswift commented 8 months ago

Mostly writing it down for myself to have a clear (and shareable) TODO list.

Our "*nix-like" toolkit will most likely be provided by ToyBox (public domain equivalent license) and our remote terminal implementation of choice is openssh-portable (3-clause BSD license or freer) ported by Microsoft heroes and tuned for MinGW by ourselves. The latter uses its own POSIX-on-Windows compatibility layer; for the needs of the former, our intent is to complement MinGW (and the underlying Microsoft CRTs) in the least invasive way possible.

Subsystems and components intended for general use (public domain)

These components will be consumed by userspace, user-facing, mostly GUI applications. While incorporation of code under non-PD permissive licenses should generally be OK during development/porting of such packages, the lodestar goal for user-facing apps should be "original license for the application package, OS or public domain all the way down". (A rule of thumb for exceptions is that dependencies qualify for an exception if they are extremely hard to overlook — e.g. "dependency D1 is the original application framework" (Qt, Electron…) or "dependency D2 is the rendering API provider" (Mesa, ANGLE…).)

win32iocompat (the OpenSSH-on-Windows porting layer)

Components aware of the win32iocompat layer (alternative names: win32compat, posix_compat) are intended for development and system administration tools. They must be available under a 3-clause BSD or a freer license.

treeswift commented 8 months ago

https://github.com/armdevvel/mxe-SHARED/issues/19 depends on this issue.

treeswift commented 7 months ago

CLang 14 supports #pragma comment(lib, "libname...") — we can (and probably should) use it to inject link-time dependencies for complemented standard headers (such as pwd.h, grp.h, paths.h etc.) without injecting linker flags from the top.

Will try with libwusers first.