brechtsanders / winlibs_mingw

winlibs standalone build of GCC compiler and MinGW-w64
937 stars 43 forks source link

Winlibs is two times slower than MSYS2 #152

Open RoyalXXX opened 1 year ago

RoyalXXX commented 1 year ago

I am using the VS code editor with C++ extension. I have tested the following g++ compilers: 1) g++ from GCC + MinGW-w64 (UCRT version) downloaded from winlibs 2) g++ from UCRT64 downloaded from MSYS2 (package mingw-w64-ucrt-x86_64-gcc) i compiled the same code, the winlibs version compiled almost twice as slow Why such difference?

brechtsanders commented 1 year ago

I have the impression it's slower too.

I will try to make a build without the following linker flags to see if it makes a difference: -Wl,--dynamicbase -Wl,--high-entropy-va -Wl,--nxcompat -Wl,--tsaware

brechtsanders commented 1 year ago

Just a question: what exactly is slow?

RoyalXXX commented 1 year ago

I have a small project: 1 *.rc file and 2 *.cpp files (Windows desktop application using C++, WinAPI and GDI+)

At first, I invoke windres.exe with VS code json args:

"args": [

"-J", "rc", "-O", "coff", "-i", "${workspaceFolder}\*.rc", "-o", "${workspaceFolder}\resources.res" ]

then g++.exe

"args": [

"${workspaceFolder}\.cpp", "${workspaceFolder}\.res", "-o", "${workspaceFolder}\a.exe", "-fdiagnostics-color=always", "-Wall", "-Wextra", "-pedantic-errors", "-O2", "-s", "-static", "-mwindows", "-lkernel32", "-luser32", "-lgdi32", "-lgdiplus", "-lcomctl32" ]

But I think, g++ compiling is slow, not windres.exe. Unfortunately, there is no way to check right now. The fact that winlibs is slow I noticed a month ago.

Le mar. 23 mai 2023 20:49, Brecht Sanders @.***> a écrit :

Just a question: what exactly is slow?

  • Compiling a single source (C and/or C++)?
  • Linking?
  • Invoking many commands to compile and link?

— Reply to this email directly, view it on GitHub https://github.com/brechtsanders/winlibs_mingw/issues/152#issuecomment-1559966668, or unsubscribe https://github.com/notifications/unsubscribe-auth/A56USXFPFZKRBGMXG64FFETXHUBFBANCNFSM6AAAAAAYL47MEA . You are receiving this because you authored the thread.Message ID: @.***>

brechtsanders commented 1 year ago

I also feel it's mostly g++ being slow. In the past there were issues with precompiled headers, maybe that's related.

The build without the flags mentioned earlier is ready (only MSVCRT build for now): https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-msvcrt-r2

Can you try if that makes any difference in speed for you?

RoyalXXX commented 1 year ago

I failed to do what you asked.

I got an error while compiling with [winlibs-x86_64-mcf-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r2] toolchain: g++.exe: fatal error: cannot execute ...x86_64-w64-mingw32/bin/as.exe

At the same time, I was able to compare the project building times of the other two ucrt compilers:

10 s -> mingw-w64-ucrt-x86_64-gcc from MSYS2

30 s -> winlibs-x86_64-mcf-seh-gcc-13.1.0-mingw-w64ucrt-11.0.0-r1

Le jeu. 25 mai 2023 11:27, Brecht Sanders @.***> a écrit :

I also feel it's mostly g++ being slow. In the past there were issues with precompiled headers, maybe that's related.

The build without the flags mentioned earlier is ready (only MSVCRT build for now):

https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-msvcrt-r2

Can you try if that makes any difference in speed for you?

— Reply to this email directly, view it on GitHub https://github.com/brechtsanders/winlibs_mingw/issues/152#issuecomment-1562581607, or unsubscribe https://github.com/notifications/unsubscribe-auth/A56USXCQDFVWPFDW7MZIIALXH4QZBANCNFSM6AAAAAAYL47MEA . You are receiving this because you authored the thread.Message ID: @.***>

brechtsanders commented 1 year ago

I'm stress testing this latest release now and as.exe works find.

Your error may indicate there is something in PATH that makes it load dependencies from the wrong place.

That may even be the cause of your issues.

When building with winlibs can you try to add mingw64/bin from within the folder where you extracted winlibs are added at the beginning of PATH?

zeitbit commented 1 year ago

Hi,

There is a problem with this release, there are several void EXEs (all bytes are 0):

mingw\bin\windmc.exe mingw\bin\windres.exe

And all the files in _mingw64\x8664-w64-mingw32\bin.

_winlibs-x8664-mcf-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r2.7z

I'm stress testing this latest release now and as.exe works find.

Your error may indicate there is something in PATH that makes it load dependencies from the wrong place.

That may even be the cause of your issues.

When building with winlibs can you try to add mingw64/bin from within the folder where you extracted winlibs are added at the beginning of PATH?

brechtsanders commented 1 year ago

You are right, there is an issue with the 64-bit toolchain in release https://github.com/brechtsanders/winlibs_mingw/releases/13.1.0-11.0.0-msvcrt-r2/

Quite possibly my antivirus ate some files, but I need to investigate.

brechtsanders commented 1 year ago

Since the slowness is with g++ in particular I will try to build with --disable-libstdcxx-backtrace instead of --enable-libstdcxx-backtrace.

libbacktrace hasn't released an actual release version, so using it may have been a bad idea.

brechtsanders commented 1 year ago

Ok, please try this release: https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-msvcrt-r3

RoyalXXX commented 1 year ago

I confirm that the error is gone, but compilation is still slow. 30 sec : winlibs gcc-13.1.0-mingw-w64msvcrt-11.0.0-r3 30 sec : winlibs gcc-13.1.0-mingw-w64ucrt-11.0.0-r3 10 sec : msys2 mingw-w64-ucrt-x86_64-gcc

Le sam. 27 mai 2023 15:25, Brecht Sanders @.***> a écrit :

Ok, please try this release: https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-msvcrt-r3

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.[image]Message ID: @.***>

luisdallos commented 1 year ago

I confirm that the error is gone, but compilation is still slow. 30 sec : winlibs gcc-13.1.0-mingw-w64msvcrt-11.0.0-r3 30 sec : winlibs gcc-13.1.0-mingw-w64ucrt-11.0.0-r3 10 sec : msys2 mingw-w64-ucrt-x86_64-gcc

@brechtsanders

¿Are GCC and Binutils binaries from winlibs being built without optimization flags at all?

According to https://github.com/msys2/MSYS2-packages/blob/master/pacman/makepkg_mingw.conf#L32, mingw packages from msys2 are built with some optimization flags passed to both CFLAGS and CXXFLAGS:

-march=nocona -msahf -mtune=generic -O2 (MINGW64 case) -march=pentium4 -mtune=generic -O2 (MINGW32 case)

brechtsanders commented 1 year ago

Can you try one of the following builds which I made with those optimization flags?

luisdallos commented 1 year ago

Can you try one of the following builds which I made with those optimization flags?

* https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-ucrt-r4b

* https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-11.0.0-msvcrt-r4b

I have done some compile time tests with both 32-bit and 64-bit builds of 13.1.0-11.0.0-msvcrt-r4b release and 13.1.0posix-16.0.3-11.0.0-msvcrt-r1 release. Here are the results:

winlibs-x86_64-posix-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r1 ``` F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow project.cpp real 13.65 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow main.cpp real 3.51 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\makefile.cpp real 30.23 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\unix\unixmake.cpp real 16.36 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\unix\unixmake2.cpp real 40.63 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/borland_bmake.cpp real 16.77 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/mingw_make.cpp real 21.47 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_nmake.cpp real 19.89 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_dsp.cpp real 24.98 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_vcproj.cpp real 17.13 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow option.cpp real 6.18 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/winmakefile.cpp real 10.46 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/projectgenerator.cpp real 10.70 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/mac/metrowerks_xml.cpp real 15.01 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/mac/pbuilder_pbx.cpp real 24.28 user 0.01 sys 0.00 ```
winlibs-x86_64-posix-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r4b ``` F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow project.cpp real 4.26 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow main.cpp real 1.14 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\makefile.cpp real 9.63 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\unix\unixmake.cpp real 5.44 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\unix\unixmake2.cpp real 14.54 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/borland_bmake.cpp real 5.62 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/mingw_make.cpp real 7.12 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_nmake.cpp real 6.78 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_dsp.cpp real 8.83 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_vcproj.cpp real 5.26 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow option.cpp real 1.73 user 0.01 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/winmakefile.cpp real 2.84 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/projectgenerator.cpp real 3.29 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/mac/metrowerks_xml.cpp real 4.83 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/mac/pbuilder_pbx.cpp real 8.75 user 0.00 sys 0.01 ```
winlibs-i686-posix-dwarf-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r1 ``` F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse project.cpp real 13.43 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse main.cpp real 3.44 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators\makefile.cpp real 29.94 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators\unix\unixmake.cpp real 16.16 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators\unix\unixmake2.cpp real 39.61 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/borland_bmake.cpp real 15.60 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/mingw_make.cpp real 19.17 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/msvc_nmake.cpp real 18.47 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/msvc_dsp.cpp real 24.50 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/msvc_vcproj.cpp real 16.49 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse option.cpp real 5.23 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/winmakefile.cpp real 9.02 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/projectgenerator.cpp real 9.81 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/mac/metrowerks_xml.cpp real 14.65 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/mac/pbuilder_pbx.cpp real 23.43 user 0.00 sys 0.01 ```
winlibs-i686-posix-dwarf-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r4b ``` F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse project.cpp real 4.13 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse main.cpp real 1.15 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators\makefile.cpp real 9.26 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators\unix\unixmake.cpp real 5.17 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators\unix\unixmake2.cpp real 13.00 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/borland_bmake.cpp real 5.07 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/mingw_make.cpp real 6.24 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/msvc_nmake.cpp real 6.04 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/msvc_dsp.cpp real 8.10 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/msvc_vcproj.cpp real 5.21 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse option.cpp real 1.70 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/win32/winmakefile.cpp real 2.74 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/projectgenerator.cpp real 3.05 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/mac/metrowerks_xml.cpp real 4.53 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -fno-omit-frame-pointer -march=i686 -mtune=generic -msse2 -mfpmath=sse generators/mac/pbuilder_pbx.cpp real 7.90 user 0.00 sys 0.00 ```

In both 32-bit and 64-bit tests, compilation times are ~3x faster when using the optimized GCC binaries.

According to the release notes, only GCC was built with optimization flags. I would expect some additional speed gains once Binutils gets built with optimization flags as both assembler (as) and linker (ld) come from Binutils.

As a side note, you should use for any future builds the linker flag -Wl,--no-insert-timestamp in order to make binaries more deterministic. I tell that as Binutils binaries from both 13.1.0-11.0.0-msvcrt-r4b and 13.1.0posix-16.0.3-11.0.0-msvcrt-r1 releases have the same file size, differing only in their PE timestamp.

brechtsanders commented 1 year ago

What exactly is the benefit of the -Wl,--no-insert-timestamp flag?

Are your measured speeds better/same/worse than MSYS2's gcc?

luisdallos commented 1 year ago

What exactly is the benefit of the -Wl,--no-insert-timestamp flag?

The -Wl,--no-insert-timestamp linker flag is useful to get reproducible builds on Windows.

Useful to avoid situations such as the Binutils binaries from both 13.1.0-11.0.0-msvcrt-r4b and 13.1.0posix-16.0.3-11.0.0-msvcrt-r1 releases differing only in their PE file header date/time stamp.

Are your measured speeds better/same/worse than MSYS2's gcc?

Here is the compile time test done with the 64-bit msvcrt version of MSYS2's gcc (GCC 13.1.0 - Binutils 2.40 - Mingw-w64 11.0.0)

mingw-w64-x86_64-gcc ``` F:\msys64\usr\bin\time.exe -p g++ -c -oproject.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow project.cpp real 4.47 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omain.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow main.cpp real 1.21 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\makefile.cpp real 9.94 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\unix\unixmake.cpp real 5.60 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ounixmake2.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators\unix\unixmake2.cpp real 15.09 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -oborland_bmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/borland_bmake.cpp real 5.64 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omingw_make.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/mingw_make.cpp real 7.23 user 0.00 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_nmake.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_nmake.cpp real 7.00 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_dsp.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_dsp.cpp real 9.23 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -omsvc_vcproj.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/msvc_vcproj.cpp real 5.31 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -ooption.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow option.cpp real 1.83 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -owinmakefile.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/win32/winmakefile.cpp real 2.95 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -oprojectgenerator.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/projectgenerator.cpp real 3.37 user 0.01 sys 0.00 F:\msys64\usr\bin\time.exe -p g++ -c -ometrowerks_xml.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/mac/metrowerks_xml.cpp real 4.94 user 0.00 sys 0.01 F:\msys64\usr\bin\time.exe -p g++ -c -opbuilder_pbx.o -O -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -I..\include -I..\src\tools -I..\mkspecs\win32-g++ -DUNICODE -DQT_NO_TEXTCODEC -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -D_WIN32_WINNT=0x0502 -D__MINGW_USE_VC2005_COMPAT -D_POSIX_THREAD_SAFE_FUNCTIONS=200112L -mwin32 -O2 -march=k8 -mtune=generic -mno-3dnow generators/mac/pbuilder_pbx.cpp real 9.01 user 0.00 sys 0.01 ```

Looks like that MSYS2's GCC compile speed is similar to WinLibs' optimized GCC build (13.1.0-11.0.0-msvcrt-r4b release), at least for the 64-bit msvcrt case (winlibs-x86_64-posix-seh-gcc-13.1.0-mingw-w64msvcrt-11.0.0-r4b)

brechtsanders commented 1 year ago

Okay, the latest builds (my computer has been busy tonight) include linker flag -Wl,--no-insert-timestamp both when building GCC and binutils:

Does it do what you expect it to do now?

luisdallos commented 1 year ago

Okay, the latest builds (my computer has been busy tonight) include linker flag -Wl,--no-insert-timestamp both when building GCC and binutils:

* https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-16.0.5-11.0.0-msvcrt-r5

* https://github.com/brechtsanders/winlibs_mingw/releases/tag/13.1.0-16.0.5-11.0.0-ucrt-r5

Does it do what you expect it to do now?

I have tested both 32-bit and 64-bit msvcrt builds but gcc and binutils binaries still come with their PE file header date/time stamp set to non-zero (as shown in the Time/Date field from objdump.exe -p gcc.exe output) despite gcc -v output showing -Wl,--no-insert-timestamp linker flag being passed to LDFLAGS.

The weird thing is that all other linker flags passed to LDFLAGS are being applied as expected (see the DllCharacteristics field from objdump.exe -p gcc.exe output).

``` Reading specs from F:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/specs COLLECT_GCC=F:\msys64\mingw64\bin\gcc.exe COLLECT_LTO_WRAPPER=F:/msys64/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/13.1.0/lto-wrapper.exe OFFLOAD_TARGET_NAMES=nvptx-none Target: x86_64-w64-mingw32 Configured with: ../configure --prefix=/R/winlibs64_stage/inst_gcc-13.1.0/share/gcc --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --enable-offload-targets=nvptx-none --with-pkgversion='MinGW-W64 x86_64-msvcrt-posix-seh, built by Brecht Sanders' --with-tune=generic --enable-checking=release --enable-threads=posix --disable-sjlj-exceptions --disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap --enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath --disable-libstdcxx-debug --disable-version-specific-runtime-libs --with-stabs --disable-symvers --enable-languages=c,c++,fortran,lto,objc,obj-c++ --disable-gold --disable-nls --disable-stage1-checking --disable-win32-registry --disable-multilib --enable-ld --enable-libquadmath --enable-libada --enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string --enable-libgomp --enable-graphite --enable-mingw-wildcard --enable-libstdcxx-time --enable-libstdcxx-pch --with-mpc=/d/Prog/winlibs64_stage/custombuilt --with-mpfr=/d/Prog/winlibs64_stage/custombuilt --with-gmp=/d/Prog/winlibs64_stage/custombuilt --with-isl=/d/Prog/winlibs64_stage/custombuilt --disable-libstdcxx-backtrace --enable-install-libiberty --enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto --enable-clocale=generic --with-libiconv --with-system-zlib --with-build-sysroot=/R/winlibs64_stage/gcc-13.1.0/build_mingw/mingw-w64 CFLAGS='-I/d/Prog/winlibs64_stage/custombuilt/include/libdl-win32 -Wno-int-conversion -march=nocona -msahf -mtune=generic -O2' CXXFLAGS='-Wno-int-conversion -march=nocona -msahf -mtune=generic -O2' LDFLAGS='-pthread -Wl,--no-insert-timestamp -Wl,--dynamicbase -Wl,--high-entropy-va -Wl,--nxcompat -Wl,--tsaware' Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 13.1.0 (MinGW-W64 x86_64-msvcrt-posix-seh, built by Brecht Sanders) ```

--

``` F:/msys64/mingw64/bin/gcc.exe: file format pei-x86-64 Characteristics 0x22e executable line numbers stripped symbols stripped large address aware debugging information removed Time/Date Sat Jun 03 15:41:14 2023 Magic 020b (PE32+) MajorLinkerVersion 2 MinorLinkerVersion 40 SizeOfCode 00000000000b6e00 SizeOfInitializedData 000000000019e400 SizeOfUninitializedData 0000000000004a00 AddressOfEntryPoint 00000000000013f0 BaseOfCode 0000000000001000 ImageBase 0000000140000000 SectionAlignment 00001000 FileAlignment 00000200 MajorOSystemVersion 4 MinorOSystemVersion 0 MajorImageVersion 0 MinorImageVersion 0 MajorSubsystemVersion 5 MinorSubsystemVersion 2 Win32Version 00000000 SizeOfImage 001aa000 SizeOfHeaders 00000400 CheckSum 001aa0d3 Subsystem 00000003 (Windows CUI) DllCharacteristics 00008160 HIGH_ENTROPY_VA DYNAMIC_BASE NX_COMPAT TERMINAL_SERVICE_AWARE SizeOfStackReserve 0000000000c00000 SizeOfStackCommit 0000000000001000 SizeOfHeapReserve 0000000000100000 SizeOfHeapCommit 0000000000001000 LoaderFlags 00000000 NumberOfRvaAndSizes 00000010 ```

--

luisdallos commented 1 year ago

About the compilation speed issue, I have done some more tests by compiling ccache 4.7.4 (2 make jobs, no redis support, tests disabled). Compilation speeds are practically the same in both WinLibs' 64-bit 13.1.0-16.0.5-11.0.0-msvcrt-r5 and Msys2's mingw-w64-x86_64-gcc cases (~190 seconds), way faster in comparision with the unoptimized gcc/binutils binaries (WinLibs' 64-bit 13.1.0posix-16.0.3-11.0.0-msvcrt-r1 case) where the same compilation takes ~480 seconds.

brechtsanders commented 1 year ago

About -Wl,--no-insert-timestamp, if it doesn't work than maybe that's a GCC bug?

About ccache: what's the difference with ccache 4.8.1 that I included? I did build it with hiredis support. Should I remove that?

luisdallos commented 1 year ago

About -Wl,--no-insert-timestamp, if it doesn't work than maybe that's a GCC bug?

I tested GCC by building xz-utils (which - like GCC and Binutils - uses autoconf as its buildsystem) with the compiler and linker flags shown at gcc -v output being passed to the configure script. Both the shared library (liblzma-5.dll) and the xz.exe utility were generated with their PE file header date/time stamp set to zero as expected.

Looks like that this bug lies in GCC/Binutils buildsystem as it is way more complex (e.g. the main configure script launches secondary configure scripts and so on) than the one present in xz-utils which has only one configure script. Either GCC or Binutils build logs can help here.

About ccache: what's the difference with ccache 4.8.1 that I included? I did build it with hiredis support. Should I remove that?

There is no need to remove hiredis support. I opted to omit hiredis (as it is an optional dependency unlike libzstd) as well as the testing stuff from the compilation speed test in order to maintain the number of files to compile as low as possible.

brechtsanders commented 1 year ago

I'm not convinced the CFLAGS/CXXFLAGS/LDFLAGS from building gcc are intended to specify it's default build flags.

What would be a good way to tell gcc to always use specific compiler and/or linker flags, independent of build system?

Could .spec files be the answer? Or is there another way?

zeitbit commented 1 year ago

I'd set/export CFLAGS/CXXFLAGS/LDFLAGS as environment variables.

Or, if you're using CMake, I'd try setting "set(CMAKE_C_FLAGS_RELEASE "...")", etc, after the project command in "CMakeLists.txt".

I'm not convinced the CFLAGS/CXXFLAGS/LDFLAGS from building gcc are intended to specify it's default build flags.

What would be a good way to tell gcc to always use specific compiler and/or linker flags, independent of build system?

Could .spec files be the answer? Or is there another way?

brechtsanders commented 1 year ago

I build thousands of projects from source, that would be a lot of work.

What I really want to know if we can tell gcc to use certain flags by default, so they don't need to be specified every time.