Author Topic: GCC - updates  (Read 83039 times)

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2521
  • Karma: +191/-0
    • View Profile
Re: GCC - updates
« Reply #105 on: April 29, 2025, 10:15:46 am »
Hi Jochen,
Thanks for the answer. So for a cross compiler setup, we would need a port of these emx tools. The OpenWatcom stuff is already there.
Am I correct? (I know, it's certainly not that easy to do)
For a cross compiler, we'd also need binutils compiled on the host platform with the changes for os2 a.out. We'd probably also need a port of ld.exe that supports EMX a.out for configure tests.

I've thought about a cross compiler a couple of times and it's made my head hurt.

I'd rather spend energy trying to get wlink to work with coff or gas object files - and trying to update the toolchain to support those.

Jochen Schäfer

  • Sr. Member
  • ****
  • Posts: 388
  • Karma: +30/-0
    • View Profile
Re: GCC - updates
« Reply #106 on: April 29, 2025, 10:22:30 am »
Hi Paul.

Fair enough. I'm just interested, what it would take to have a cross compiler.

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2521
  • Karma: +191/-0
    • View Profile
Re: GCC - updates
« Reply #107 on: April 29, 2025, 10:25:51 am »
Fair enough. I'm just interested, what it would take to have a cross compiler.

Don't get me wrong, there could be definite benefits - for example - building qtwebengine on OS/2 is a PITA due to g++ processes consuming ~2gb of RAM on large compilations, so having to limit the number of ninja processes - building on a modern linux system could allow multiple processes to run without memory exhaustion.

Jochen Schäfer

  • Sr. Member
  • ****
  • Posts: 388
  • Karma: +30/-0
    • View Profile
Re: GCC - updates
« Reply #108 on: April 29, 2025, 10:53:10 am »
Fair enough. I'm just interested, what it would take to have a cross compiler.

Don't get me wrong, there could be definite benefits - for example - building qtwebengine on OS/2 is a PITA due to g++ processes consuming ~2gb of RAM on large compilations, so having to limit the number of ninja processes - building on a modern linux system could allow multiple processes to run without memory exhaustion.
I'm doing the same for the DOSBOX-X cpu core files.
Another benefit would to have Github actions automatically build the code, so we would have some sort of integration test.
« Last Edit: April 30, 2025, 11:21:16 am by Jochen Schäfer »

Dave Yeo

  • Hero Member
  • *****
  • Posts: 5362
  • Karma: +127/-1
    • View Profile
Re: GCC - updates
« Reply #109 on: April 29, 2025, 05:15:10 pm »
I tried building Qt6 on Linux, it was scarily fast. This I5 went into turbo mode, 3.6 GHz, OS/2 doesn't seem to enable the turbo and stays at 3.2 GHz, and temperatures shot up in this little computer, CPU at close to 90C (60C is about the highest it gets on OS/2) and worse, the NVMe at its max of 85C. Build failed in the webengine and I didn't want to do it again without more cooling.
As for cross-compiling, not only GCC and friends, the EMX toolchain need porting, a lot of other tools have OS/2 specific code. Think of the autotools. Plus there are test programs and such built during a complex build. Some use Rexx too. Possible but a bigger job then likely expected.

Pete

  • Hero Member
  • *****
  • Posts: 1404
  • Karma: +13/-0
    • View Profile
Re: GCC - updates
« Reply #110 on: April 29, 2025, 10:33:45 pm »
Hi Dave

Maybe you want to check out water cooling as it seems to work cooler/quieter than cpu fan type coolers.


Regards

Pete

Dave Yeo

  • Hero Member
  • *****
  • Posts: 5362
  • Karma: +127/-1
    • View Profile
Re: GCC - updates
« Reply #111 on: April 30, 2025, 01:35:50 am »
It's a fairly small computer, https://www.os2world.com/wiki/index.php?title=Lenovo_ThinkCentre_M910s_-_10ML and likely no room in it for a water cooler. I have picked up a small (40mm?) fan to stick in the front, have to figure out the wiring as the fan has 3 wires and the header has 4 wires, also picked up a heat sink for the NVMe. Have to take it apart and add the components and clean it again. I use wood heat and the house is dusty:)
I also see that actually the CPU was faster then I mentioned, 3.4/3.8GHz.
It's a nice little computer, was C$80 used with no storage. Going to a lot of similar on the market as it is just a hair too old to run Win 11 being released in 2019.

Remy

  • Hero Member
  • *****
  • Posts: 878
  • Karma: +14/-1
    • View Profile
Re: GCC - updates
« Reply #112 on: April 30, 2025, 01:01:30 pm »
It's a fairly small computer, https://www.os2world.com/wiki/index.php?title=Lenovo_ThinkCentre_M910s_-_10ML and likely no room in it for a water cooler. I have picked up a small (40mm?) fan to stick in the front, have to figure out the wiring as the fan has 3 wires and the header has 4 wires, also picked up a heat sink for the NVMe. Have to take it apart and add the components and clean it again. I use wood heat and the house is dusty:)
I also see that actually the CPU was faster then I mentioned, 3.4/3.8GHz.
It's a nice little computer, was C$80 used with no storage. Going to a lot of similar on the market as it is just a hair too old to run Win 11 being released in 2019.

May be you can change the ventirad (heat sink)
e.g. be quiet! Pure Rock LP   (very low profile but a high tdp value (100w) - your cpu is 65w  (this should reduce a lot max temperature)
The high should be good, you may check if the scare width of 92mm is okk too and that it didn't touch ram slots.

https://www.bequiet.com/fr/cpucooler/3992

Pete

  • Hero Member
  • *****
  • Posts: 1404
  • Karma: +13/-0
    • View Profile
Re: GCC - updates
« Reply #113 on: April 30, 2025, 03:40:10 pm »
Hi Dave

I see what you mean.
Looks like a slim case and probably not quite enough room to fit a water radiator to the case rear fan mounting.
Probably have problems with some of the taller air coolers as well.


Regards

Pete
 




Paul Smedley

  • Hero Member
  • *****
  • Posts: 2521
  • Karma: +191/-0
    • View Profile
Re: GCC - updates
« Reply #114 on: May 03, 2025, 10:52:17 am »
just a FYI - gcc 15.1.10 has some issues with libstdc++ filesystem support which prevent syncqt.exe from Qt working, so I can're rebuilt Qt 6.8 with it (older versions don't use a compiled syncqt.exe are are OK).

Couple of different (but maybe related) errors:
Code: [Select]
  what():  filesystem error: cannot get file size: Operation not supported on socket [U:/dev/qt6-base-os2-6.8.x/build-gcc15/include/QtExampleIcons/qtexampleiconsversion.h]
Not a directory(20):filesystem error: cannot create directories: Not a directory [U:/dev/qt6-base-os2-6.8.x/build-gcc15/include/QtCore/6.8.3/QtCore/private]
The fix isn't obvious (yet)
« Last Edit: May 03, 2025, 10:54:33 am by Paul Smedley »

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2521
  • Karma: +191/-0
    • View Profile
Re: GCC - updates
« Reply #115 on: Today at 02:11:17 am »
OK I think I've found the root cause of this...

Dave Yeo

  • Hero Member
  • *****
  • Posts: 5362
  • Karma: +127/-1
    • View Profile
Re: GCC - updates
« Reply #116 on: Today at 03:28:58 am »
Are you also updating Qt for C++20?
Code: [Select]
:/work/dooble-dry/Source/dooble.cc
In file included from L:/QT6-6.2.X/include/QtCore/qfuture.h:45,
                 from L:/QT6-6.2.X/include/QtCore/QtCore:92,
                 from L:/QT6-6.2.X/include/QtConcurrent/QtConcurrentDepends:3,
                 from L:/QT6-6.2.X/include/QtConcurrent/QtConcurrent:3,
                 from K:/work/dooble-dry/Source/dooble.cc:41:
L:/QT6-6.2.X/include/QtCore/qfutureinterface.h:451:37: error: template-id not al
lowed for constructor in C++20 [-Werror=template-id-cdtor]
  451 |     explicit QFutureInterface<void>(State initialState = NoState)
      |                                     ^~~~~
L:/QT6-6.2.X/include/QtCore/qfutureinterface.h:451:37: note: remove the '< >'
cc1plus.exe: all warnings being treated as errors
make: *** [Makefile:12688: temp/obj/dooble.obj] Error 1

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2521
  • Karma: +191/-0
    • View Profile
Re: GCC - updates
« Reply #117 on: Today at 07:37:16 am »
OK I think I've found the root cause of this...

OK https://smedley.id.au/tmp/gcc-15.1.0-os2-20250504.zip should fix the problems with filesystem support in libstdc++

The fix turned out to be pretty simple. I had recently set GCCOPT to -static-libgcc to avoid a dependency on gcc1.dll. However - libstdc++ is built with -shared-libgcc - and the flags conflict - so a bunch of configure tests were failing - which resulted in some broken functionality.

Paul Smedley

  • Hero Member
  • *****
  • Posts: 2521
  • Karma: +191/-0
    • View Profile
Re: GCC - updates
« Reply #118 on: Today at 07:38:00 am »
Are you also updating Qt for C++20?
Code: [Select]
:/work/dooble-dry/Source/dooble.cc
In file included from L:/QT6-6.2.X/include/QtCore/qfuture.h:45,
                 from L:/QT6-6.2.X/include/QtCore/QtCore:92,
                 from L:/QT6-6.2.X/include/QtConcurrent/QtConcurrentDepends:3,
                 from L:/QT6-6.2.X/include/QtConcurrent/QtConcurrent:3,
                 from K:/work/dooble-dry/Source/dooble.cc:41:
L:/QT6-6.2.X/include/QtCore/qfutureinterface.h:451:37: error: template-id not al
lowed for constructor in C++20 [-Werror=template-id-cdtor]
  451 |     explicit QFutureInterface<void>(State initialState = NoState)
      |                                     ^~~~~
L:/QT6-6.2.X/include/QtCore/qfutureinterface.h:451:37: note: remove the '< >'
cc1plus.exe: all warnings being treated as errors
make: *** [Makefile:12688: temp/obj/dooble.obj] Error 1
I wsan't planning on it - just remove -Werror from the makefiles..

Dave Yeo

  • Hero Member
  • *****
  • Posts: 5362
  • Karma: +127/-1
    • View Profile
Re: GCC - updates
« Reply #119 on: Today at 07:44:53 am »
Are you also updating Qt for C++20?
Code: [Select]
:/work/dooble-dry/Source/dooble.cc
In file included from L:/QT6-6.2.X/include/QtCore/qfuture.h:45,
                 from L:/QT6-6.2.X/include/QtCore/QtCore:92,
                 from L:/QT6-6.2.X/include/QtConcurrent/QtConcurrentDepends:3,
                 from L:/QT6-6.2.X/include/QtConcurrent/QtConcurrent:3,
                 from K:/work/dooble-dry/Source/dooble.cc:41:
L:/QT6-6.2.X/include/QtCore/qfutureinterface.h:451:37: error: template-id not al
lowed for constructor in C++20 [-Werror=template-id-cdtor]
  451 |     explicit QFutureInterface<void>(State initialState = NoState)
      |                                     ^~~~~
L:/QT6-6.2.X/include/QtCore/qfutureinterface.h:451:37: note: remove the '< >'
cc1plus.exe: all warnings being treated as errors
make: *** [Makefile:12688: temp/obj/dooble.obj] Error 1
I wsan't planning on it - just remove -Werror from the makefiles..

A simple good idea. Even better, any idea where the -Werror comes from?