Subject: bug#45303: #45303 [feature/native-comp] building error on Windows

From: Pal Gloss <[email-masked]>
Date: Sat, 19 Dec 2020 19:07:17 +0100

Hi,

thank you for the quick fixes

I do not understand 3b53a591faed03679382a601b93da7fe6ce3b4af: the way I saw the problem is that directory-files now takes an optional COUNT parameter (see thread starting with https://lists.gnu.org/archive/html/emacs-devel/2020-10/msg00691.htmlhttps://lists.gnu.org/archive/html/emacs-devel/2020-10/msg00691.htm) so that the compiler rightly warned that we passed a function expecting 5 parameters to internal_condition_case_4 that works with a pointer to a function with 4 arguments.  I did not see any special warning anymore and haven't seen it crash yet, so the change is probably OK.

> > #+begin_example
> > Info-default-directory-list
> > ("%emacs_dir%/share/info/")
> > ----------------
> > configure-info-directory
> > "%emacs_dir%/share/info"
> > #+end_example

I just checked and these %emacs_dir% are also present in a "normal" emacs 27.1 (installed via msys2/mingw pacman, not self-built).

> Right so (unless I'm forgetting something) just the zlib linker error
> should be remaining, correct?

It was not only zlib that was missing, but also gccjit (my hack sets both: LIBGCCJIT = -lz -lgccjit)

> The Windows port is a bit rusty, I believe nobody compiled it since 6+
> months, is good we resurrect it and keep it running.

I was not able to build libgccjit before, but now it is in MSYS2/MINGW pacman, I can build from time to time.

Kind regards,
--
Pal Gloss

For reference, here are the commands I used for my latest build

#+begin_src shell :exports code
  git rev-parse HEAD feature/native-comp ; gcc --version
#+end_src

: 3b53a591faed03679382a601b93da7fe6ce3b4af
: 3b53a591faed03679382a601b93da7fe6ce3b4af
: gcc.exe (Rev6, Built by MSYS2 project) 10.2.0
: Copyright (C) 2020 Free Software Foundation, Inc.
: This is free software; see the source for copying conditions.  There is NO
: warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

* Linker errors
There are 2 linker errors that prevent advancing: zlib and libgccjit.
There is also an issue with strsignal which I will not care about just yet

: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: comp.o: in function `md5_gz_stream':
: C:\msys64\home\cramaph1\emacs-native-comp\build\src/../../emacs/src/comp.c:713: undefined reference to `inflateInit2_'
: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\home\cramaph1\emacs-native-comp\build\src/../../emacs/src/comp.c:730: undefined reference to `inflate'
: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\home\cramaph1\emacs-native-comp\build\src/../../emacs/src/comp.c:741: undefined reference to `inflateEnd'
: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\home\cramaph1\emacs-native-comp\build\src/../../emacs/src/comp.c:741: undefined reference to `inflateEnd'
: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: comp.o: in function `declare_imported_func':
: C:\msys64\home\cramaph1\emacs-native-comp\build\src/../../emacs/src/comp.c:973: undefined reference to `gcc_jit_type_get_const'

#+begin_src shell :exports code
  pacman -S --needed base-devel \
    mingw-w64-x86_64-toolchain \
    mingw-w64-x86_64-xpm-nox \
    mingw-w64-x86_64-libtiff \
    mingw-w64-x86_64-giflib \
    mingw-w64-x86_64-libpng \
    mingw-w64-x86_64-libjpeg-turbo \
    mingw-w64-x86_64-librsvg \
    mingw-w64-x86_64-lcms2 \
    mingw-w64-x86_64-jansson \
    mingw-w64-x86_64-libxml2 \
    mingw-w64-x86_64-gnutls \
    mingw-w64-x86_64-zlib \
    mingw-w64-x86_64-harfbuzz \
    mingw-w64-x86_64-libgccjit
  PROCESSORS_TO_USE="3"
  EMACS_VERSION=emacs-native-comp
  ./autogen.sh
  mkdir -p ../build
  cd ../build
  ../emacs/configure \
        --with-xml2 \
        --without-pop \
        --prefix="/home/cramaph1/$EMACS_VERSION/dest" \
        --without-compress-install \
        --without-dbus \
        --with-nativecomp \
        --with-modules 'CFLAGS=-O2 -g3'
  # fix 2 linker errors by making sure the correct libraries are added to the linker command
  sed -i -e 's/^LIBGCCJIT = *$/LIBGCCJIT = -lz -lgccjit/' src/Makefile
  make -j"$PROCESSORS_TO_USE" && make install
#+end_src