Skip to content

Commit

Permalink
Merge pull request #21114 from boegel/20240802175744_new_pr_GCC1420
Browse files Browse the repository at this point in the history
{compiler} GCC v14.2.0
  • Loading branch information
Micket authored Aug 3, 2024
2 parents d19b03d + 63994bd commit 1f35c67
Show file tree
Hide file tree
Showing 8 changed files with 259 additions and 0 deletions.
28 changes: 28 additions & 0 deletions easybuild/easyconfigs/b/Bison/Bison-3.8.2-GCCcore-14.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
easyblock = 'ConfigureMake'

name = 'Bison'
version = '3.8.2'

homepage = 'https://www.gnu.org/software/bison'
description = """Bison is a general-purpose parser generator that converts an annotated context-free grammar
into a deterministic LR or generalized LR (GLR) parser employing LALR(1) parser tables."""

toolchain = {'name': 'GCCcore', 'version': '14.2.0'}

source_urls = [GNU_SOURCE]
sources = [SOURCELOWER_TAR_GZ]
checksums = ['06c9e13bdf7eb24d4ceb6b59205a4f67c2c7e7213119644430fe82fbd14a0abb']

builddependencies = [
('M4', '1.4.19'),
# use same binutils version that was used when building GCCcore toolchain
('binutils', '2.42', '', SYSTEM),
]


sanity_check_paths = {
'files': ['bin/%s' % x for x in ['bison', 'yacc']] + [('lib/liby.a', 'lib64/liby.a')],
'dirs': [],
}

moduleclass = 'lang'
31 changes: 31 additions & 0 deletions easybuild/easyconfigs/b/binutils/binutils-2.42-GCCcore-14.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name = 'binutils'
version = '2.42'

homepage = 'https://directory.fsf.org/project/binutils/'
description = "binutils: GNU binary utilities"

toolchain = {'name': 'GCCcore', 'version': '14.2.0'}

source_urls = [GNU_SOURCE]
sources = [SOURCE_TAR_GZ]
checksums = ['5d2a6c1d49686a557869caae08b6c2e83699775efd27505e01b2f4db1a024ffc']

builddependencies = [
('flex', '2.6.4'),
('Bison', '3.8.2'),
# use same binutils version that was used when building GCC toolchain, to 'bootstrap' this binutils
('binutils', version, '', SYSTEM)
]

dependencies = [
# zlib is a runtime dep to avoid that it gets embedded in libbfd.so,
# see https://github.com/easybuilders/easybuild-easyblocks/issues/1350
('zlib', '1.3.1'),
]

# avoid build failure when makeinfo command is not available
# see https://sourceware.org/bugzilla/show_bug.cgi?id=15345
buildopts = 'MAKEINFO=true'
installopts = buildopts

moduleclass = 'tools'
34 changes: 34 additions & 0 deletions easybuild/easyconfigs/f/flex/flex-2.6.4-GCCcore-14.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name = 'flex'
version = '2.6.4'

homepage = 'https://github.com/westes/flex'

description = """
Flex (Fast Lexical Analyzer) is a tool for generating scanners. A scanner,
sometimes called a tokenizer, is a program which recognizes lexical patterns
in text.
"""

toolchain = {'name': 'GCCcore', 'version': '14.2.0'}
toolchainopts = {'pic': True}

source_urls = ['https://github.com/westes/flex/releases/download/v%(version)s/']
sources = [SOURCELOWER_TAR_GZ]
checksums = ['e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995']

builddependencies = [
('Bison', '3.8.2'),
('help2man', '1.49.3'),
# use same binutils version that was used when building GCC toolchain
('binutils', '2.42', '', SYSTEM),
]

dependencies = [
('M4', '1.4.19'),
]

# glibc 2.26 requires _GNU_SOURCE defined to expose reallocarray in the correct
# header, see https://github.com/westes/flex/issues/241
preconfigopts = 'export CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" && '

moduleclass = 'lang'
22 changes: 22 additions & 0 deletions easybuild/easyconfigs/g/GCC/GCC-14.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
easyblock = 'Bundle'

name = 'GCC'
version = '14.2.0'

homepage = 'https://gcc.gnu.org/'
description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada,
as well as libraries for these languages (libstdc++, libgcj,...)."""

toolchain = SYSTEM

dependencies = [
('GCCcore', version),
# binutils built on top of GCCcore, which was built on top of binutils (built with system toolchain)
('binutils', '2.42', '', ('GCCcore', version)),
]

altroot = 'GCCcore'
altversion = 'GCCcore'

# this bundle serves as a compiler-only toolchain, so it should be marked as compiler (important for HMNS)
moduleclass = 'compiler'
63 changes: 63 additions & 0 deletions easybuild/easyconfigs/g/GCCcore/GCCcore-14.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
easyblock = 'EB_GCC'

name = 'GCCcore'
version = '14.2.0'

homepage = 'https://gcc.gnu.org/'
description = """The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada,
as well as libraries for these languages (libstdc++, libgcj,...)."""

toolchain = SYSTEM

source_urls = [
'https://ftpmirror.gnu.org/gnu/gcc/gcc-%(version)s', # GCC auto-resolving HTTP mirror
'https://sourceware.org/pub/gcc/releases/gcc-%(version)s', # fallback URL for GCC
'https://ftpmirror.gnu.org/gnu/gmp', # idem for GMP
'https://ftpmirror.gnu.org/gnu/mpfr', # idem for MPFR
'https://ftpmirror.gnu.org/gnu/mpc', # idem for MPC
'ftp://gcc.gnu.org/pub/gcc/infrastructure/', # GCC dependencies
'https://gcc.gnu.org/pub/gcc/infrastructure/', # HTTPS mirror for GCC dependencies
'https://libisl.sourceforge.io/', # fallback URL for isl
'https://sourceware.org/pub/newlib/', # for newlib
'https://github.com/MentorEmbedded/nvptx-tools/archive', # for nvptx-tools
]
sources = [
'gcc-%(version)s.tar.gz',
'gmp-6.3.0.tar.bz2',
'mpfr-4.2.1.tar.bz2',
'mpc-1.3.1.tar.gz',
'isl-0.26.tar.bz2',
'newlib-4.4.0.20231231.tar.gz',
{'download_filename': '3136cf9.tar.gz', 'filename': 'nvptx-tools-20240801.tar.gz'},
]
patches = [
'GCCcore-6.2.0-fix-find-isl.patch',
'GCCcore-9.3.0_gmp-c99.patch',
]
checksums = [
{'gcc-14.2.0.tar.gz': '7d376d445f93126dc545e2c0086d0f647c3094aae081cdb78f42ce2bc25e7293'},
{'gmp-6.3.0.tar.bz2': 'ac28211a7cfb609bae2e2c8d6058d66c8fe96434f740cf6fe2e47b000d1c20cb'},
{'mpfr-4.2.1.tar.bz2': 'b9df93635b20e4089c29623b19420c4ac848a1b29df1cfd59f26cab0d2666aa0'},
{'mpc-1.3.1.tar.gz': 'ab642492f5cf882b74aa0cb730cd410a81edcdbec895183ce930e706c1c759b8'},
{'isl-0.26.tar.bz2': '5eac8664e9d67be6bd0bee5085d6840b8baf738c06814df47eaf4166d9776436'},
{'newlib-4.4.0.20231231.tar.gz': '0c166a39e1bf0951dfafcd68949fe0e4b6d3658081d6282f39aeefc6310f2f13'},
{'nvptx-tools-20240801.tar.gz': 'a1106bf11b66d12e67194d8aa37196bb96996b614f44b3d3bc1b5854eefec03c'},
{'GCCcore-6.2.0-fix-find-isl.patch': '5ad909606d17d851c6ad629b4fddb6c1621844218b8d139fed18c502a7696c68'},
{'GCCcore-9.3.0_gmp-c99.patch': '0e135e1cc7cec701beea9d7d17a61bab34cfd496b4b555930016b98db99f922e'},
]

builddependencies = [
('M4', '1.4.19'),
('binutils', '2.42'),
]

languages = ['c', 'c++', 'fortran']

withisl = True
withnvptx = True

# Perl is only required when building with NVPTX support
if withnvptx:
osdependencies = ['perl']

moduleclass = 'compiler'
25 changes: 25 additions & 0 deletions easybuild/easyconfigs/h/help2man/help2man-1.49.3-GCCcore-14.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
easyblock = 'ConfigureMake'

name = 'help2man'
version = '1.49.3'

homepage = 'https://www.gnu.org/software/help2man/'
description = """help2man produces simple manual pages from the '--help' and '--version' output of other commands."""

toolchain = {'name': 'GCCcore', 'version': '14.2.0'}

source_urls = [GNU_SOURCE]
sources = [SOURCE_TAR_XZ]
checksums = ['4d7e4fdef2eca6afe07a2682151cea78781e0a4e8f9622142d9f70c083a2fd4f']

builddependencies = [
# use same binutils version that was used when building GCC toolchain
('binutils', '2.42', '', SYSTEM),
]

sanity_check_paths = {
'files': ['bin/help2man'],
'dirs': [],
}

moduleclass = 'tools'
29 changes: 29 additions & 0 deletions easybuild/easyconfigs/m/M4/M4-1.4.19-GCCcore-14.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
easyblock = 'ConfigureMake'

name = 'M4'
version = '1.4.19'

homepage = 'https://www.gnu.org/software/m4/m4.html'
description = """GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible
although it has some extensions (for example, handling more than 9 positional parameters to macros).
GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc."""

toolchain = {'name': 'GCCcore', 'version': '14.2.0'}

source_urls = [GNU_SOURCE]
sources = [SOURCELOWER_TAR_GZ]
checksums = ['3be4a26d825ffdfda52a56fc43246456989a3630093cced3fbddf4771ee58a70']

# use same binutils version that was used when building GCC toolchain
builddependencies = [('binutils', '2.42', '', SYSTEM)]

# '-fgnu89-inline' is required to avoid linking errors with older glibc's,
# see https://github.com/easybuilders/easybuild-easyconfigs/issues/529
configopts = "--enable-c++ CPPFLAGS=-fgnu89-inline"

sanity_check_paths = {
'files': ['bin/m4'],
'dirs': [],
}

moduleclass = 'devel'
27 changes: 27 additions & 0 deletions easybuild/easyconfigs/z/zlib/zlib-1.3.1-GCCcore-14.2.0.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
easyblock = 'ConfigureMake'

name = 'zlib'
version = '1.3.1'

homepage = 'https://www.zlib.net/'
description = """zlib is designed to be a free, general-purpose, legally unencumbered -- that is,
not covered by any patents -- lossless data-compression library for use on virtually any
computer hardware and operating system."""

toolchain = {'name': 'GCCcore', 'version': '14.2.0'}
toolchainopts = {'pic': True}

source_urls = ['https://zlib.net/fossils']
sources = [SOURCELOWER_TAR_GZ]
# patches = ['zlib-%(version)s_fix-CC-logic-in-configure.patch']
checksums = ['9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23']

# use same binutils version that was used when building GCC toolchain
builddependencies = [('binutils', '2.42', '', SYSTEM)]

sanity_check_paths = {
'files': ['include/zconf.h', 'include/zlib.h', 'lib/libz.a', 'lib/libz.%s' % SHLIB_EXT],
'dirs': [],
}

moduleclass = 'lib'

0 comments on commit 1f35c67

Please sign in to comment.