bug-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mingw framework "make install" bug


From: Stephen Brandon
Subject: mingw framework "make install" bug
Date: Wed, 10 Oct 2001 17:47:54 +0100

Hi,

Found a bug in framework.make to do with mingw compilation
and installation of frameworks.

The frameworks in question compile and link fine on
linux/i386.

On MinGW though, the MKPerformSndMIDI.framework build
directory looks a bit strange, even before it tries to
install. That is, even if I do a straight "make" instead of
"make shared=yes", no binary is built into the framework,
but a false link is put in:
$ ls -l MKPerformSndMIDI.framework/Versions/A/ix86/mingw32/gnu-gnu-gnu/
total 0
lrwxrwxrwx    1 Administ None          134 Oct 10 15:20
MKPerformSndMIDI -> libMKPerformSndMIDI.a.1.0.0

(and libMKPerformSndMIDI.a.1.0.0 doesn't exist, of course).

If I do a "make shared=yes" then the dll gets built
alongside the framework directory, not inside it. This may
be intentional - the dll will need to get put into the PATH
- but the internal ".a.1.0.0" as seen above is surely wrong.

Could someone confirm what is supposed to happen here?

There's a worse bug in the "make shared=yes install". In
this case there are some errors in framework.makefile which
cause the deletion and attempted linking of some "empty
string" variables. Which fails.

In the section from framework.makefile:100, if a static (non
dll) library is to be created, several variables are
created, eg FRAMEWORK_LIBRARY_FILE,
FRAMEWORK_LIBRARY_FILE_EXT.
If a dll is to be created, different variables are created:
eg FRAMEWORK_FILE, FRAMEWORK_FILE_EXT.

In the internal-framework-install:: however, checks are not
made for dll/non-dll, and various LN_S and rm calls are done
with $(FRAMEWORK_LIBRARY_FILE) etc which are empty if using
dlls. These cause the makefile to fail before the dll file
is successfully installed.

If I knew exactly what was supposed to go where, I would
suggest a patch for this issue.

Could someone please explain briefly what is supposed to get
installed to where in this situation? Does the dll go into
GNUSTEP_SYSTEM_ROOT/Libraries/ix.../gnu-gnu-gnu/foo.dll, or
is it supposed to sit inside the foo.framework directory and
be linked to? (ok, soft linking is a hack that the cygwin
bash supports, but is probably not going to work for apps
started in any other way on Win32).

And if I want to be able to link to my dll/framework, am I
also supposed to have a static .a library somewhere, or is
just the dll enough?

(I've managed to link to the directx audio libraries via
some .a libraries someone over at MinGW provided. But
because I can't get my framework to install, I can't try
linking a test application to my framework and hence to
direct-x, just yet).

Any help/advice/fix to framework.make welcome!

Many thanks,
Stephen Brandon
stephen@brandonitconsulting.co.uk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]