Hi, wine-devel
I'm working on implementation of Windows Game Explorer interfaces for Wine. The work is in advanced stage now, but I have problem with implementation of conformance tests.
Thing I want to test is loading and parsing so-called Game Definition Files. GDF are not separate files, but stored as resources in binary modules (usually in game's main executable). Using GE interfaces, programmer only needs to pass path to binary, and GE automatically loads and process embedded GDF(s).
Checking results of routines execution is not problem for me. But thing I test is parser, so I need to pass various GDF files to routine. And, as GDFs are stored in binaries, I will need to create many binaries. They should be created in compile time and available for test's executable while running it.
The problem is that I don't know how to do this using wine's mechanisms. How should Makefile.in file look to build additional executable files properly (they should be probably always native win32 executables, even if parameter "crosstest" wasn't specified)? How should I guarantee that these additional executables will be copied into winetest directory (to make them accessible while executing tests)?
Thanks in advance Mariusz Pluciński
On 06/30/2010 09:52 AM, Mariusz Pluciński wrote:
Checking results of routines execution is not problem for me. But thing I test is parser, so I need to pass various GDF files to routine. And, as GDFs are stored in binaries, I will need to create many binaries. They should be created in compile time and available for test's executable while running it.
Do they really need to be separate binaries? Can't it be multiple resources in one binary? And if so, just add resources to the test. And no, it doesn't have to be a pure win-pe binary. Wine can load and parse resources just from winelib (dll.so/exe.so) binaries.
Vitaliy
Wine can load and parse resources just from winelib (dll.so/exe.so) binaries.
I assume that dll.so/exe.so are for all practical purposes identical to .dll/.exe except they can't be run on windows.
Peter
Do they really need to be separate binaries?
Unfortunately yes. To the function I pass only the path to binary, and it unpacks data internally, so I cannot select actual resource.
One binary can contain multiple GDFs only if they are translations of the same file in few languages. And I don't know is there any way to force library to load specified language version (and it is, in my opinion, not "clean" way of testing).
And no, it doesn't have to be a pure win-pe binary. Wine can load and parse resources just from winelib (dll.so/exe.so) binaries.
That's true on Wine, but I also want to make my tests runnable under Windows, so in this case I need to create native PE modules.
And as I said, my main problem is that I don't know how to write rules in Makefile.in to build what I need.
Mariusz Pluciński vshader@gmail.com writes:
That's true on Wine, but I also want to make my tests runnable under Windows, so in this case I need to create native PE modules.
And as I said, my main problem is that I don't know how to write rules in Makefile.in to build what I need.
You can't do that in the Makefile, you need to generate the files at run time.
W dniu 1 lipca 2010 21:27 użytkownik Alexandre Julliard julliard@winehq.org napisał:
You can't do that in the Makefile, you need to generate the files at run time.
Huh, so while executing the test, I need to run at least resources compiler and linker, right? It looks really more complicated way, and I admit that I completely don't know how to do it. Which tools should I use? Can I use Mingw? Can I assume that these tools are installed on system where test is running? Or maybe I should use some tools provided by wine? And, of course, how to make it working on Windows?
Mariusz Pluciński vshader@gmail.com writes:
W dniu 1 lipca 2010 21:27 użytkownik Alexandre Julliard julliard@winehq.org napisał:
You can't do that in the Makefile, you need to generate the files at run time.
Huh, so while executing the test, I need to run at least resources compiler and linker, right? It looks really more complicated way, and I admit that I completely don't know how to do it. Which tools should I use? Can I use Mingw? Can I assume that these tools are installed on system where test is running? Or maybe I should use some tools provided by wine? And, of course, how to make it working on Windows?
None of that, of course. The resources are built at compile time, at run time you create a PE header and copy the needed resource data. You may even be able to use UpdateResource to make things easier.
W dniu 1 lipca 2010 21:55 użytkownik Alexandre Julliard julliard@winehq.org napisał:
Mariusz Pluciński vshader@gmail.com writes:
W dniu 1 lipca 2010 21:27 użytkownik Alexandre Julliard julliard@winehq.org napisał:
You can't do that in the Makefile, you need to generate the files at run time.
Huh, so while executing the test, I need to run at least resources compiler and linker, right? It looks really more complicated way, and I admit that I completely don't know how to do it. Which tools should I use? Can I use Mingw? Can I assume that these tools are installed on system where test is running? Or maybe I should use some tools provided by wine? And, of course, how to make it working on Windows?
None of that, of course. The resources are built at compile time, at run time you create a PE header and copy the needed resource data. You may even be able to use UpdateResource to make things easier.
All right, now it's more clear for me. I'm not so familiar with working on resources, and I didn't know there's API call which can modify resources in existing binary. I'll try to make it this way, thanks.
Am 01.07.2010 21:55, schrieb Alexandre Julliard:
None of that, of course. The resources are built at compile time, at run time you create a PE header and copy the needed resource data. You may even be able to use UpdateResource to make things easier.
Do we have existing tests creating PE header?