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: Corwin Brust
Subject: Re: Native compilation on Windows, was Re: Bootstrap Compilation Speed
Date: Sun, 30 Jan 2022 16:16:52 -0600

Thanks Arash.  This is very helpful.

On Sun, Jan 30, 2022 at 3:34 PM Arash Esbati <arash@gnu.org> wrote:
>
> I'm not tracking this development, so please bear with me.  Is the plan
> to unpack the file emacs-28.0.91-no-deps.zip into, say C:\emacs and
> unpack the .dll from emacs-28-deps.zip[1] into C:\emacs\bin?  If so, I'm

That should work.  Unpacking emacs-28.0.91.zip somewhere should be a
short-cut for that, exactly.

> afraid that the compiled features will not work since dependencies are
> missing in emacs-28-deps.zip, e.g.:
>
> 1)  libgnutls-30.dll has these dependencies:
> Found: C:\path\to\msys64\mingw64\bin\libgnutls-30.dll
> C:\path\to\msys64\mingw64\bin\libgnutls-30.dll
>   C:\path\to\msys64\mingw64\bin\libwinpthread-1.dll
>   C:\path\to\msys64\mingw64\bin\libgcc_s_seh-1.dll
>   C:\path\to\msys64\mingw64\bin\libgmp-10.dll
>   C:\path\to\msys64\mingw64\bin\libhogweed-6.dll
>     C:\path\to\msys64\mingw64\bin\libnettle-8.dll
>   C:\path\to\msys64\mingw64\bin\libidn2-0.dll
>     C:\path\to\msys64\mingw64\bin\libiconv-2.dll
>     C:\path\to\msys64\mingw64\bin\libintl-8.dll
>     C:\path\to\msys64\mingw64\bin\libunistring-2.dll
>   C:\path\to\msys64\mingw64\bin\libp11-kit-0.dll
>     C:\path\to\msys64\mingw64\bin\libffi-7.dll
>   C:\path\to\msys64\mingw64\bin\libtasn1-6.dll
>
> 2)  libharfbuzz-0.dll has these dependencies:
> Found: C:\path\to\msys64\mingw64\bin\libharfbuzz-0.dll
> C:\path\to\msys64\mingw64\bin\libharfbuzz-0.dll
>   C:\path\to\msys64\mingw64\bin\libgcc_s_seh-1.dll
>     C:\path\to\msys64\mingw64\bin\libwinpthread-1.dll
>   C:\path\to\msys64\mingw64\bin\libstdc++-6.dll
>   C:\path\to\msys64\mingw64\bin\libfreetype-6.dll
>     C:\path\to\msys64\mingw64\bin\libbz2-1.dll
>     C:\path\to\msys64\mingw64\bin\libbrotlidec.dll
>       C:\path\to\msys64\mingw64\bin\libbrotlicommon.dll
>     C:\path\to\msys64\mingw64\bin\libharfbuzz-0.dll
>       C:\path\to\msys64\mingw64\bin\libglib-2.0-0.dll
>         C:\path\to\msys64\mingw64\bin\libintl-8.dll
>           C:\path\to\msys64\mingw64\bin\libiconv-2.dll
>         C:\path\to\msys64\mingw64\bin\libpcre-1.dll
>       C:\path\to\msys64\mingw64\bin\libgraphite2.dll
>     C:\path\to\msys64\mingw64\bin\libpng16-16.dll
>       C:\path\to\msys64\mingw64\bin\zlib1.dll
>
> libgcc_s_seh-1.dll is an important one and IIRC, this dependency was the
> one pushing Phillip into packaging the GCC source next to his binaries.
>

IIUC, there is special-casing in the dependency packaging script that
prevents "recursing" exactly this chain:

$ grep -C1 gcc build-dep-zips.py
## Packages to fiddle with
## Source for gcc-libs is part of gcc
SKIP_SRC_PKGS=["mingw-w64-gcc-libs"]
SKIP_DEP_PKGS=["mingw-w64-glib2"]

I surmise people who want TLS (just as, now, people who want
native-comp) must install MSYS2 and place it's bin directory directory
on the windows path before starting Emacs.

If we want source zips to include gcc then we can probably do likewise
for gccjit.  To me, it sounds to if native-comp (and TLS) "just work",
i.e. so people don't need to hand-install MSYS2 to use the
"batteries-included"  versions of the binary distributions for
windows.

I'll do some experimentation.  I'd like to understand what this does
to the packaging times and file sizes. If this is something we are
already sure that we don't want to do, please let me know.

> I checked the dependencies with cygcheck program shipped with Msys2 (and
> snipped the standard Win libraries)
>
> Best, Arash
>
> Footnotes:
> [1]  Files from https://git.sr.ht/~mplscorwin/emacs-w64

Thanks for working on this; I really appreciate your diligence.



reply via email to

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