Currently Wine still requires 32-bit code to run 32-bit Windows software, which is a problem for Catalina (which dropped 32-bit code support almost completely), and cannot be solved with a simple recompilation. It's only possible to use Wine for some 64-bit Windows software.
CodeWeavers, who develops CrossOver and by extension Wine, has developed a solution for 32-bit software, and they've posted some updates on their blog about it.
Currently these changes are only available in their commercial CrossOver product, but apparently the release the source for every version they release.
According to a post by a moderator on forum.winehq.org, the CodeWeavers solution likely won't be merged into the official Wine. I'd take what they say with a grain of salt though because the things they say about ELF vs PE (or Mach-O vs PE in the case of macOS) don't really seem directly applicable to the issue at hand.
This was discussed at WineConf. Alexandre made it clear that the Codeweavers solution is a hack that will not be accepted into Wine's development branch. The long term solution for Wine is the change from ELF to PE. Work on that has already begun, but it is not going to be completed any time soon. When I asked Alexandre for an estimate, he said it will definitely not be ready for Wine 5.0, but might be ready for Wine 6.0.
Codeweavers has said they intend to release their Catalina code under a free software license, so anyone who wants to compile Wine with it can, but at present no one has volunteered to maintain that code.
They further said:
The new patched clang/llvm added -mwine32 (and some other additions) using that flag instead of the usual -m32 will have llvm doing the heavy lifting generating the trunking code.
Wine moving to PE is for various reasons.
A simple reason Windows uses PE files not ELF files so any checks will fail on wine mostly due to the stub dll files that link to the real ELF.