Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TODO #8

Open
tumagonx opened this issue Dec 2, 2021 · 5 comments
Open

TODO #8

tumagonx opened this issue Dec 2, 2021 · 5 comments

Comments

@tumagonx
Copy link
Owner

tumagonx commented Dec 2, 2021

  • move to msvc compiler or maybe clang instead of gcc
    there are several .obj/.lib of interest that provide "official" backported functions
    msvcrt_winxp.obj (part of WDK/DDK) : provide some secure api
    fileextd.lib (independent / part of WSDK) : with the help of fileextd.h (download) this provide OpenFileById, GetFileInformationByHandleEx, SetFileInformationByHandle. note that the one shipped with WSDK need Windows NT 5.2 (2003/XP64).
  • cleanup Pthread emulated ThreadAPI, there are lot example out there.
  • fix GetFinalPathNameByHandle, currently the code make no sense when tested on real XP.
  • incorporate https://github.com/katahiromz/vista2xp especially shell32 part which bring SHCreateItemFromParsingName
@tumagonx
Copy link
Owner Author

tumagonx commented Dec 2, 2021

Provide static library that can be integrated to a compiler (preferably clang) and not to use link ntdll directly
Use case: building modern open source apps

I been tinkering with the idea of MSVC frankenbuild based on Clang/LLVM 10 with headers/libs taken from MSVC 2019 16.7 (the last XP compatible runtime) replacing VS2008's internal compiler part (I hate VS2010) and WSDK 7.1. So far it works for trivial stuff.

With a msvc/gcc compatible C++17 toolset, Cmake/ninja and static compatibility library, this would serve XP as dogfooding development box for years to go.

Update: to clarify, 16.7 libs/headers is okay with /MD (dynamic link) but static link (libcmt) won't work due to "init" injection by mutex header.

@tumagonx
Copy link
Owner Author

tumagonx commented Dec 2, 2021

Vulkan: Swiftshader has moving to provide CPU-based vulkan runtime this another good candidate for XP. IF ever vulkan become dominant....
Wine3d (DX11): Currently this never works for me, other people claim this somewhat works :noidea:

@Svyatpro
Copy link

Svyatpro commented Dec 3, 2021

Vulkan: Swiftshader has moving to provide CPU-based vulkan runtime this another good candidate for XP. IF ever vulkan become dominant.... Wine3d (DX11): Currently this never works for me, other people claim this somewhat works :noidea:

Wine3d (DX11) worked for me mostly fine. The only condition was NVIDIA Fermi+

@tumagonx
Copy link
Owner Author

tumagonx commented Dec 4, 2021

I'm on Intel HD3000 :(
found more polished similar project: https://github.com/zeroclear/xpext , so it should be dll not static lib my bad
that can be enhanced to be single dll to address TODO 2 so one could put the import lib as part of compiler (pass -lxpext -lntdll / xpext.lib ntdll.lib)

@tumagonx
Copy link
Owner Author

I have uploaded clang 10.0.1 (version matched with VS 2019 16.7) for testing
Clang-10.0.1.7z
this will form more complete toolchain by adding:
entire MSVC 16.7 lib/header (ATL/MFC/UCRT/VCRT)
msbuild (mono version that match VS 2019)
cmake 3.15
meson 0.56
ninja 1.9.0
Git version?

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

No branches or pull requests

2 participants