emacs-devel
[Top][All Lists]
Advanced

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

Re: Native compilation on Windows, was Re: Bootstrap Compilation Speed


From: H. Dieter Wilhelm
Subject: Re: Native compilation on Windows, was Re: Bootstrap Compilation Speed
Date: Wed, 23 Feb 2022 07:44:50 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (windows-nt)

Eli Zaretskii <eliz@gnu.org> writes:

>> From: "H. Dieter Wilhelm" <dieter@duenenhof-wilhelm.de>
>> Cc: Phillip Lord <phillip.lord@russet.org.uk>,  arash@gnu.org,
>>   corwin@bru.st,  emacs-devel@gnu.org
>> Date: Mon, 21 Feb 2022 22:59:07 +0100
>> 
>> > Run this in the 'bin/' directory where you have executable programs
>> > and DLLs, and it will show a sorted list of all the DLLs needed by
>> > those programs and DLLs.  You will need to recognize and ignore any
>> > system DLLs, such as msvcrt.dll, KERNEL32.dll, USER32.dll, WS2_32.dll
>> > etc. in the list; for the rest, make sure every one of them is in the
>> > same 'bin/' directory.  Each time you add some DLL to the 'bin/'
>> > directory, re-run the above command again, because adding DLLs can
>> > potentially add dependencies.  Repeat this process until all the DLLs
>> > shown by the command are in the same directory: then you are done.
>> 
>> When trying above iterative approach, I just find libgmp and after
>> adding libgmp-10.dll to the folder there are no further dependencies to
>> see!?
>> 
>>   uidg1626@VSL7V7PW MINGW64 ~/emacs-build/build/emacs-28.0.91/bin
>>   $ objdump.exe -p *.exe *.dll |grep "DLL Name"|sort -u
>>           DLL Name: ADVAPI32.dll
>>           DLL Name: COMCTL32.dll
>>           DLL Name: GDI32.dll
>>           DLL Name: KERNEL32.dll
>>           DLL Name: MPR.dll
>>           DLL Name: SHELL32.dll
>>           DLL Name: USER32.dll
>>           DLL Name: USP10.dll
>>           DLL Name: WINMM.dll
>>           DLL Name: WINSPOOL.DRV
>>           DLL Name: WSOCK32.dll
>>           DLL Name: comdlg32.dll
>>           DLL Name: libgmp-10.dll
>>           DLL Name: msvcrt.dll
>>           DLL Name: ole32.dll
>
> The dependency on the optional DLLs is implicit, because Emacs loads
> them dynamically at run time.  You need to place the DLLs mentioned in
> dynamic-library-alist defined in w32-win.el in the bin/ directory, and
> _then_ repeat the process.  That's because we are talking about the
> dependencies of those dynamically-loaded DLLs.

I see, thank you for this concrete recipe.

I'm a bit baffled, why is in dynamic-library-alist no harfbuzz but
gccjit, gdiplus and shlwapi are there which seem not to be included in
the list of mingw packages mentioned in README.W64?

Emacs-28.0.91
  dynamic-library-alist                                nt/README.W64
(
 (xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll")       mingw-w64-x86_64-xpm-nox 
\            
 (tiff "libtiff-5.dll" "libtiff3.dll" "libtiff.dll")   mingw-w64-x86_64-libtiff 
\            
 (gif "libgif-7.dll")                                  mingw-w64-x86_64-giflib 
\             
 (png "libpng16.dll" "libpng16-16.dll")                mingw-w64-x86_64-libpng 
\             
 (jpeg "libjpeg-8.dll")                                
mingw-w64-x86_64-libjpeg-turbo \   
 (svg "librsvg-2-2.dll")                               mingw-w64-x86_64-librsvg 
\            
 (lcms2 "liblcms2-2.dll")                              mingw-w64-x86_64-lcms2 \ 
     
 (json "libjansson-4.dll")                             mingw-w64-x86_64-jansson 
\            
 (libxml2 "libxml2-2.dll" "libxml2.dll")               mingw-w64-x86_64-libxml2 
\            
 (gnutls "libgnutls-30.dll")                           mingw-w64-x86_64-gnutls 
\             
 (zlib "zlib1.dll" "libz-1.dll")                       mingw-w64-x86_64-zlib \  
     
                                                       
mingw-w64-x86_64-harfbuzz          
 (gdk-pixbuf "libgdk_pixbuf-2.0-0.dll")
 (glib "libglib-2.0-0.dll")
 (gio "libgio-2.0-0.dll")
 (gobject "libgobject-2.0-0.dll")
  ;; below DLLs are not part of Emacs-28.0.91 for Windows!
 (gccjit "libgccjit-0.dll")
 (gdiplus "gdiplus.dll")
 (shlwapi "shlwapi.dll")
 )

Are gdiplus and shlwapi somehow missing in the current Emacs Windows
distribution?  (Existing ert tests don't indicate that.)


               Dieter



reply via email to

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