some thoughts on win32 'make install'

Thiago Macieira thiago at macieira.org
Fri Oct 11 08:23:40 UTC 2013


On sexta-feira, 11 de outubro de 2013 18:06:40, Lubomir I. Ivanov wrote:
> > That was my assumption too. The script runs quite well in the cross-build.
> > One thing I didn't check: is C:\Windows\System32 on $PATH? Because if it
> > is, the script I wrote will copy the Windows DLLs too and we don't want
> > that.
> yes, it is.

I'll need to exclude it. We don't want to package those DLLs.

> > I had actually never used $(SED). I first wrote a manual "sed", but then I
> > noticed that the Makefile had the variable set, so I started using it.
> > 
> > Feel free to change back to just "sed".
> 
> there seems to be a problem with $(CC) as well. i don't think it
> should be hardcoded?

The CC variable should have been set at the beginning of the Makefile. How does 
any C source get compiled otherwise?

> > Change the latter part to:
> >         die("$!");
> > 
> > This will at least print the actual error. Maybe no objdump to be found in
> > $PATH?
> 
> my $objdump = $ENV{objdump} ? $ENV{objdump} : "i686-w64-mingw32-objdump";
> 
> objdump is in PATH, but doesn't $ENV return the contents of an env.
> variable named 'objdump'?
> if so this would fail on windows, because there is not such variable.

Oops, that was a left-over testing. I should have left it as "objdump" in the 
fallback case.

Does it run if you change the third operand to "objdump"?

> > I'm assuming that you actually have subsurface.exe running, which means
> > that all the DLLs must be found in $PATH. Any missing DLLs are silently
> > discarded, since we don't want to package the ones that come with the
> > system in C:\Windows\System32.
> > 
> > I could change it so that it complains about missing DLLs except if they
> > are in the system32 dir, but I'd need a solution for the cross-build
> > packaging.
>
> i don't have the DLLs in PATH, so i copy the files where the .exe is,
> which should be the first search location for a DLL, if i recall
> correctly.

Good point, I need to add that case too.

> so we may have to instruct developers to copy all required DLL's in
> folder that is in PATH, so that the perl script can find them (but
> also subsurface).

I'd hope this instruction is not necessary. Subsurface won't run unless all 
the DLLs are in PATH or next to the .exe. If I add the side-by-side case to 
the script, it should be enough.

> the output for a missing DLL is a good idea.

Yup. But I need a way to detect system DLLs that we don't want to ship and, 
thus, are allowed to be missing.

-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel Open Source Technology Center
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.hohndel.org/pipermail/subsurface/attachments/20131011/727cdd5d/attachment.sig>


More information about the subsurface mailing list