niXman / mingw-builds

Scripts for building the 32 and 64-bit MinGW-W64 compilers for Windows
Other
282 stars 107 forks source link

Change archive names to include default msvcrt name #630

Closed starg2 closed 1 year ago

starg2 commented 1 year ago

In preparation for niXman/mingw-builds-binaries#29.

niXman commented 1 year ago

merged, thank you!

niXman commented 1 year ago

@starg2 should we change the .yml file for ucrt builds too?

starg2 commented 1 year ago

Simply adding ucrt to the build matrix won't work.

We first need to build a msvcrt-to-ucrt cross toolchain and use that to build ucrt-only toolchains.


There are several ways to achieve the same thing. If I were you, I would:

  1. bootstrap and release ucrt-only toolchains at mingw-builds-binaries. This can be done either locally or with GitHub Actions.
  2. update the build script to download the newly published toolchains (pick ucrt one when building ucrt toolchains).
  3. add ucrt to CI configs (both mingw-builds and mingw-builds-binaries).
niXman commented 1 year ago

working on the first point.

niXman commented 1 year ago

hmm...

faced with the following error on winpthreads build stage:

*** Warning: linker path does not have real file for library -lucrtbase.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libucrtbase and none of the candidates passed a file format test
*** using a file magic. Last file checked: C:/msys64/home/nixman/mingw-builds/toolchains/mingw64/x86_64-w64-mingw32/lib/libucrtbase.a
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.

*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.
libtool: link: ar cru .libs/libwinpthread.a  src/libwinpthread_la-barrier.o src/libwinpthread_la-cond.o src/libwinpthread_la-misc.o src/libwinpthread_la-mutex.o src/libwinpthread_la-rwlock.o src/libwinpthread_la-spinlock.o src/libwinpthread_la-thread.o src/libwinpthread_la-ref.o src/libwinpthread_la-sem.o src/libwinpthread_la-sched.o src/libwinpthread_la-clock.o src/libwinpthread_la-nanosleep.o src/version.o
libtool: link: ranlib .libs/libwinpthread.a
libtool: link: ( cd ".libs" && rm -f "libwinpthread.la" && cp -pR "../libwinpthread.la" "libwinpthread.la" )
rm -f libpthread.a
rm -f libpthread.dll.a
cp -f .libs/libwinpthread.a libpthread.a  
cp -f .libs/libwinpthread.dll.a libpthread.dll.a  
ranlib libpthread.a
cp: cannot stat '.libs/libwinpthread.dll.a': No such file or directory
make[2]: *** [Makefile:610: libpthread.dll.a] Error 1

for the -lucrtbase I think the linker expects the libucrtbase file name, but it doesn't exist on the OS. instead there is c:/windows/system32/ucrtbase.dll file. im unsure how should I fix such an error...

@starg2 any ideas?

niXman commented 1 year ago

hmm... very strange because the libucrtbase.a also present on the host toolchain...

C:/msys64/home/nixman/mingw-builds/toolchains/mingw64/x86_64-w64-mingw32/lib/libucrtbase.a

starg2 commented 1 year ago

What is the command line options?

I have never encountered such an error.

Also, I don't think passing -lucrtbase is a good idea.

niXman commented 1 year ago

What is the command line options?

./build --mode=gcc-12.2.0 --arch=x86_64 --buildroot=/c/mingw-build/temp.ucrt64 --exceptions=seh --rt-version=v10 --threads=win32 --enable-languages=c,c++ --with-default-msvcrt=ucrt --no-gcc-lto --no-bootstrap --no-extras

I have never encountered such an error.

me too.

Also, I don't think passing -lucrtbase is a good idea.

it's not me, I think it comes from winptreadss configure script...

niXman commented 1 year ago

ahh, it comes from here: https://github.com/niXman/mingw-builds/blob/develop/scripts/winpthreads.sh#L74

niXman commented 1 year ago

hmm... when that line is commented out - it built successfully.

niXman commented 1 year ago

explicit linking with libucrtbase.a was removed: https://github.com/niXman/mingw-builds/commit/e10bcac69cf12ec51c5747d2415f76e9ebf1c100

so, I have successfully built the following builds locally: gcc-12.2.0, i686/x86_64, seh/dwarf, win32/posix.

niXman commented 1 year ago

going to https://github.com/niXman/mingw-builds-binaries/issues/29