OS2 World Community Forum
OS/2, eCS & ArcaOS - Technical => Programming => Topic started by: Paul Smedley on March 16, 2022, 09:57:02 am
-
Hi All,
These have all been posted in the FORTRAN thread (https://www.os2world.com/forum/index.php?topic=3017), however people may not have realised that I've updated GCC recently.
I built:
- GCC 9.4.0 - https://smedley.id.au/tmp/gcc-9.4.0-os2-20220314b.zip
- GCC 10.3.0 - https://smedley.id.au/tmp/gcc-10.3.0-os2-20220314.zip
- GCC 11.2.0 - https://smedley.id.au/tmp/gcc-11.2.0-os2-20220316.zip
These have had various degrees of testing, and importantly, Dave has had issues building XUL.DLL from Mozilla with my builds vs the latest BWW builds.
Any and all feedback appreciated :)
Cheers,
Paul
-
Update for GCC 11.2.0: https://smedley.id.au/tmp/gcc-11.2.0-os2-20220320.zip
Rebuilt with -Os vs -O2 which avoids a compiler SIGSEGV on certain source files.
-
More updates:
https://smedley.id.au/tmp/gcc-11.2.0-os2-20220326.zip
With help from Steven, the cause of the SIGSEGV has been found :) This seems pretty solid now!
-
GCC 11.3.0 - https://smedley.id.au/tmp/gcc-11.3.0-os2-20220422.zip
-
[U:\DEV]gcc --version
gcc (GCC) 12.1.0
Copyright (C) 2022 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.
-
Wasn't 12.1 released yesterday?
-
Wasn't 12.1 released yesterday?
I got the announcement email on the evening of May 6th (.au time zone).
There were only a couple of small patches required, doing more testing now, I'll post a link later today hopefully.
Interestingly, from the release notes:
This release deprecates support for the STABS debugging format and
introduces support for the CTF debugging format [1].
-
How hard would it be to maintain stabs support in your fork? And whatever happened with aout being depreciated?
-
Hey Dave,
How hard would it be to maintain stabs support in your fork? And whatever happened with aout being depreciated?
No idea re: stabs support. Of course deprecated doesn't *necessarily* mean immediate removal in the next version. There is a bunch of stuff in Samba that is deprecated - but not yet removed. ie SMB1 support.
aout is simpler - gcc only produced assembly - it's the assembler that takes that assembly and turns it into the right object format. So long as long as we have a working version of gas, we should be ok.
Link to the 12.1.0 build is https://smedley.id.au/tmp/gcc-12.1.0-os2-20220509.zip
Tested:
- building GCC 12.1.10
- building PHP 8.1.5
- building openssl 1.1.1o
- building apr-1.7.0
All seems fine so far, but YMMV
Cheers,
Paul
PS General reminder that if you want to support future ports there's a Paypal link at https://os2ports.smedley.id.au or it can also be done via the AN store at https://www.arcanoae.com/shop/os2-ports-paul-smedley/
-
Not that it seems there's a great deal (any?) interest, but I'm getting some SIGSEGV building some code today with GCC 12.1.0, really not sure why yet. Will investigate as time permits.
-
Paul, everyone...
Not that it seems there's a great deal (any?) interest...
This always interests me, however I will honestly say I simply do not know how best to "deploy" the non-RPM versions on my machine, which already has the official "gcc (GCC) 9.2.0 20190812 (OS/2 RPM build 9.2.0-5.oc00)" version installed.
I dread the thought of messing this working install up.
So is there a recommendation/standard way to deploy different GCC versions? Those of you who are doing so, what approach are you taking? I'm talking about not just getting the binaries out there, but are you not building GCC version specific environment setup CMDs?, etc???
I suppose a follow-up to the above really is: to what extent can the on-line multi-version-GCC deployment instructions be readily applied in our OS/2 environment?
Thanks for all the work!
-
Hi Dariusz,
What I do is unzip the GCC to @unixroot/usr so using GCC 9.4.0 as an example, I have w:\usr\local940. Then in @unixroot/usr/bin I have the attached gcc940env.cmd and run that in the command window where I want to use the new GCC. Line 74 is where you point to the local940 or whichever GCC,
call GCC322plus sPath, 'gcc940', 0, sLinker;
Adjust the gcc940 line to whichever GCC you're using, I have multiple gcc*env.cmd files for different GCC versions.
Should really double check that this includes all the C++ stuff, KOMH originally did the cmd file quite a while back.
-
[U:\DEV\gcc-os2]gcc --version
gcc (GCC) 12.2.0
Copyright (C) 2022 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.
binaries soon if there's any interest.
-
I dread the thought of messing this working install up.
So is there a recommendation/standard way to deploy different GCC versions? Those of you who are doing so, what approach are you taking? I'm talking about not just getting the binaries out there, but are you not building GCC version specific environment setup CMDs?, etc???
I have a completely working rpm environment. I also have many (most) of Paul's builds available.
I have several compilers installed so I have a compilers directory.
Under \compilers I have a gcc3.3.5 under which all the others reside:
03-13-22 18:04 <DIR> 0 bin
03-13-22 18:04 <DIR> 0 binutils
03-13-22 18:08 <DIR> 0 doc
03-13-22 18:05 <DIR> 0 i386-pc-os2-elf
03-13-22 18:06 <DIR> 0 i386-pc-os2-emx
03-13-22 18:06 <DIR> 0 include
08-12-17 23:36 <DIR> 124 info
03-13-22 18:07 <DIR> 0 lib
08-12-18 0:37 <DIR> 124 local510
08-12-18 0:51 <DIR> 0 local550
09-02-18 11:03 <DIR> 124 local620
08-12-18 0:40 <DIR> 124 local630
04-13-18 21:21 <DIR> 124 local710
04-13-18 21:18 <DIR> 124 local720
02-24-18 19:54 <DIR> 124 local730
08-09-18 0:59 <DIR> 0 local810
03-24-19 14:56 <DIR> 150 local820
05-05-19 9:56 <DIR> 150 local830
05-05-19 9:39 <DIR> 150 local910
03-13-22 17:47 <DIR> 0 local940
08-16-22 20:44 <DIR> 0 local1030
08-16-22 20:44 <DIR> 0 local1040
08-16-22 20:45 <DIR> 0 local1120
08-16-22 20:45 <DIR> 0 local1130
08-16-22 20:45 <DIR> 0 local1210
08-12-17 23:37 <DIR> 124 man
09-02-18 11:47 <DIR> 0 older
03-13-22 18:07 <DIR> 0 share
(older has 16 versions of 4.x.x)
I have a cmd script in each to set the environment:
SET GCCVER=10.4.0
SET GVER=1040
SET GCCDIR=e:\compilers\gcc440\local%GVER%
SET GCCDIR2=e:/compilers/gcc440/local%GVER%
SET GCCMAIN=e:
set GCCBASE=e:/usr
set USRBASE=e:/usr
SET PATH=%GCCDIR%\bin;%GCCDIR%\libexec\gcc\i386-pc-os2-emx\%GCCVER%;%PATH%
SET BEGINLIBPATH=%GCCDIR%\lib;%BEGINLIBPATH%
SET C_INCLUDE_PATH=%GCCDIR2%/lib/gcc/i386-pc-os2-emx/%GCCVER%/include;%GCCDIR2%/include;%USRBASE%/local/include;%GCCBASE%/include;
SET CPLUS_INCLUDE_PATH=%GCCDIR2%/include/c++/%GCCVER%;%GCCDIR2%/include/c++/%GCCVER%/i386-pc-os2-emx;%GCCDIR2%/lib/gcc/i386-pc-os2-emx/%GCCVER%/include;%USRBASE%/local/include;%GCCBASE%/include;
SET CPLUS_INCLUDE_PATH=%CPLUS_INCLUDE_PATH%;%GCCDIR2%/include;%GCCDIR2%/include/c++/backward;%GCCDIR2%/include/c++/%GCCVER%;%GCCDIR2%/include/c++/%GCCVER%/tr1;%GCCBASE%/include;
SET LIBRARY_PATH=%GCCDIR2%/lib/gcc/i386-pc-os2-emx/%GCCVER%;%GCCDIR2%/lib;%GCCDIR2%/lib/gcc/i386-pc-os2-emx/%GCCVER%;%USRBASE%/local/lib;%GCCBASE%/lib;
SET LIB=%LIBRARY_PATH%
This makes changing the version simple for each drop, right at the top.
It places the particular GCC headers and libraries first, then falls to the local lib and headers and finally to the rpm installed ones.
-
[U:\DEV\gcc-os2]gcc --version
gcc (GCC) 12.2.0
binaries soon if there's any interest.
I'm interested.
-
[U:\DEV\gcc-os2]gcc --version
gcc (GCC) 12.2.0
binaries soon if there's any interest.
I'm interested.
https://smedley.id.au/tmp/gcc-12.2.0-os2-20220820.zip - source is at https://github.com/psmedley/gcc-os2/tree/gcc-12
Feedback appreciated - seems to work as well as 12.1.0 in the tests I've done so far.
-
Hi Paul,
Thankz again for the update, slighty tested it on some programs with cmake, qt5 and make, all where compiling fine.
Where some small programs i tested it with.
Keep up the good work :)
-
Hi Elbert,
Thankz again for the update, slighty tested it on some programs with cmake, qt5 and make, all where compiling fine.
Where some small programs i tested it with.
Keep up the good work :)
Thanks for testing, and confirming things seem to work.
Cheers,
Paul
-
Updated GCC 12.2.0 build, which is compatible with rpm. https://smedley.id.au/tmp/gcc-12.2.0-os2-20230404.zip fixes are mainly to do with adding support for drive letters in cxx11::filesystem to fit some Qt 6.5. issues.
-
GCC updated to 12.3.0 - https://smedley.id.au/tmp/gcc-12.3.0-os2-20230513.zip