"Dimitrie O. Paun" dpaun@rogers.com writes:
However, these tweaks are really annoying in the initial stages of the port, and would be so nice if we had a nice compiler wrapper (call it wcc) that would do that behind the scenes, so that the only modification to the makefile would be:
-CC=gcc +CC=wcc
Q: Alexandre, would you accept such a utility in the tree?
I don't know, I don't think you can write a one-size-fits-all script, different apps will require different options, and then it will get even more confusing IMO if you have two different ways of doing it depending on your options. Maybe we should simply have a script example in the documentation that people can adapt and ship with their app if the makefile really makes it hard to set options.
-RC=windres +RC=wrc
This would mean moving the resources out of the .spec.c file, and exporting the resources variable so we can link it into the .spec.c file.
Q: Alexandre, is this acceptable? Does it warrant discussion?
I don't think that's necessary. Using .o files has a number of problems, and it's really cleaner to use .res IMO. It's also more along the lines of how Windows does it, and allows you to keep using windres if you want, instead of being forced to switch to wrc.
- Our linking process is quite different from the "standard" one which uses gcc/ld to do the linking. We generate intermediate files (.spec.c files), and use different flags. Again, the solution for this (to at least help initial porting efforts) would be a wrapper script that does this, that can be used instead of ld. And so the question comes back again, to haunt us: is this needed/wanted/acceptable?
Yes, I think we want a wrapper like dllwrap to do all that. I'm not sure a script would be enough, we may want a full-fledged C program. The idea would be that you do something like:
winewrap *.o *.res -o foo -lwhatever
and it builds the .spec.c, compiles it, links everything into foo.exe.so, and builds a foo executable (which may be a wrapper script or a real ELF binary). This also (mostly) solves the "Running" issues: you still have a .exe.so file, but you don't really need to worry about it. You simply run "foo" and everything works.