diff --git a/easybuild/easyconfigs/g/glslang-SPIRV/glslang-SPIRV-15.4.0-GCCcore-14.3.0.eb b/easybuild/easyconfigs/g/glslang-SPIRV/glslang-SPIRV-15.4.0-GCCcore-14.3.0.eb new file mode 100644 index 000000000000..a421ca1c6617 --- /dev/null +++ b/easybuild/easyconfigs/g/glslang-SPIRV/glslang-SPIRV-15.4.0-GCCcore-14.3.0.eb @@ -0,0 +1,75 @@ +easyblock = 'CMakeMake' + +name = 'glslang-SPIRV' +version = '15.4.0' + +homepage = 'https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/' +description = """Glslang is the official reference compiler front end for the OpenGL ES and OpenGL shading languages. +It implements a strict interpretation of the specifications for these languages. It is open and free for anyone to use, +either from a command line or programmatically. The OpenGL and OpenGL ES working groups are committed to maintaining +consistency between the reference compiler and the corresponding shading language specifications.""" + +toolchain = {'name': 'GCCcore', 'version': '14.3.0'} +toolchainopts = {'pic': True} + +# From https://github.com/KhronosGroup/glslang/blob/15.4.0/known_good.json +local_spirv_tools_commit = '33e02568181e3312f49a3cf33df470bf96ef293a' # equivalent to v2025.3.0.rc1 +local_spirv_headers_commit = '2a611a970fdbc41ac2e3e328802aed9985352dca' # equivalent to v1.4.321.0 +local_googletest_commit = 'f8d7d77c06936315286eb55f8de22cd23c188571' # equivalent to tag v1.14.0 + +local_github_repos = [ + ("KhronosGroup", "SPIRV-Tools", local_spirv_tools_commit, 'spirv-tools'), + ("KhronosGroup", "SPIRV-Headers", local_spirv_headers_commit, 'spirv-tools/external/spirv-headers'), + ("google", "googletest", local_googletest_commit, 'googletest'), +] + +sources = ['https://github.com/KhronosGroup/glslang/archive/%(version)s.tar.gz'] + +# Extend the sources by adding external components from their respective GitHub repos at the known good commits +local_ext_dir = "%(builddir)s/glslang-%(version)s/External" # Where the external components are expected to be +local_ext_cmd = "tar xvf %s --strip-components=1 -C $_" +for local_owner, local_repo, local_commit, local_dir in local_github_repos: + sources.append({ + "filename": f"{local_repo}-{local_commit[:8]}.tar.xz", + "extract_cmd": f"mkdir -p {local_ext_dir}/{local_dir} && {local_ext_cmd}", + "git_config": { + "url": f"https://github.com/{local_owner}", + "repo_name": local_repo, + "commit": local_commit, + }, + }) + +checksums = [ + {'15.4.0.tar.gz': 'b16c78e7604b9be9f546ee35ad8b6db6f39bbbbfb19e8d038b6fe2ea5bba4ff4'}, + {'SPIRV-Tools-33e02568.tar.xz': '57cc1a374b2d4829a3165b586f287d33e6beb4ee69d49e42c80a2cd2e8983c1d'}, + {'SPIRV-Headers-2a611a97.tar.xz': '0333b5d2c63b95be3771a3146b3692e7a6720889187275669119c14a48e3fd6e'}, + {'googletest-f8d7d77c.tar.xz': '8dd1ff67f8abca903d3f03c78eaae7b2076a73f465cb1f369f3698bfbd6f4aad'}, +] + +builddependencies = [ + ('binutils', '2.44'), + ('CMake', '4.0.3'), + ('Bison', '3.8.2'), +] + +dependencies = [ + ('Python', '3.13.5'), # Only needed with SPIRV +] + +configopts = "-DENABLE_OPT=ON" # Needed if SPIRV is used + +runtest = True + +sanity_check_paths = { + 'files': [ + 'bin/glslang', + 'lib/libglslang.a', 'lib/libGenericCodeGen.a', 'lib/libSPIRV.a', + ], + 'dirs': ['include/glslang'], +} + +sanity_check_commands = [ + 'glslang --version', +] + +moduleclass = 'compiler' diff --git a/easybuild/easyconfigs/l/libclc/libclc-20.1.8-GCCcore-14.3.0.eb b/easybuild/easyconfigs/l/libclc/libclc-20.1.8-GCCcore-14.3.0.eb new file mode 100644 index 000000000000..77d0090a1011 --- /dev/null +++ b/easybuild/easyconfigs/l/libclc/libclc-20.1.8-GCCcore-14.3.0.eb @@ -0,0 +1,32 @@ +easyblock = 'CMakeMake' + +name = 'libclc' +version = '20.1.8' + +homepage = 'https://libclc.llvm.org/' +description = """ +libclc is an open source, BSD/MIT dual licensed implementation of the library requirements of the OpenCL +C programming language, as specified by the OpenCL 1.1 Specification. +""" + +toolchain = {'name': 'GCCcore', 'version': '14.3.0'} + +source_urls = ['https://github.com/llvm/llvm-project/releases/download/llvmorg-%(version)s/'] +sources = ['libclc-%(version)s.src.tar.xz'] +checksums = ['ecd83a52859742f71f4c332538f8bee54a6743374a233b5a85017de22d75c227'] + +builddependencies = [ + ('binutils', '2.44'), + ('CMake', '4.0.3'), + ('LLVM', '20.1.8'), +] + +sanity_check_paths = { + 'files': [ + 'share/pkgconfig/libclc.pc', + 'include/clc/clc.h', + ], + 'dirs': ['include/clc', 'share/clc'], +} + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/o/OpenGL/OpenGL-2025.09-GCCcore-14.3.0.eb b/easybuild/easyconfigs/o/OpenGL/OpenGL-2025.09-GCCcore-14.3.0.eb new file mode 100644 index 000000000000..f4499e232457 --- /dev/null +++ b/easybuild/easyconfigs/o/OpenGL/OpenGL-2025.09-GCCcore-14.3.0.eb @@ -0,0 +1,128 @@ +easyblock = 'Bundle' + +name = 'OpenGL' +version = '2025.09' + +homepage = 'http://www.opengl.org/' +description = """ +Open Graphics Library (OpenGL) is a cross-language, cross-platform application +programming interface (API) for rendering 2D and 3D vector graphics. + +This module is a bundle of software required for OpenGL rendering. +It provides Mesa as an open-source implementation of the OpenGL specification +with software rendering and AMD GPU support, libglvnd for a vendor neutral +dispatch layer for rendering with both NVIDIA GPUs & Mesa, Mesa-demos for +sample applications, and GLU as an computer graphics library utilizing OpenGL. +""" + +toolchain = {'name': 'GCCcore', 'version': '14.3.0'} + +builddependencies = [ + ('binutils', '2.44'), + ('Bison', '3.8.2'), + ('CMake', '4.0.3'), + ('Mako', '1.3.10'), + ('Meson', '1.8.2'), + ('Ninja', '1.13.0'), + ('Python', '3.13.5'), + ('PyYAML', '6.0.2'), + ('flex', '2.6.4'), + ('expat', '2.7.1'), + ('glslang-SPIRV', '15.4.0'), + ('libclc', '20.1.8'), + ('libxml2', '2.14.3'), + ('pkgconf', '2.4.3'), +] + +dependencies = [ + ('LLVM', '20.1.8'), + ('Wayland', '1.24.0'), + ('X11', '20250608'), + ('elfutils', '0.193'), + ('libdrm', '2.4.125'), + ('libunwind', '1.8.2'), + ('nettle', '3.10.2'), + ('zlib', '1.3.1'), +] + +default_easyblock = 'MesonNinja' + +local_pkg_config = 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:%(installdir)s/lib/pkgconfig && ' +local_pkg_config += 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:%(installdir)s/lib64/pkgconfig && ' + +local_mesa_configopts = "-Dplatforms=x11,wayland -Dvulkan-drivers='swrast,amd' -Dvulkan-layers='device-select' " +local_mesa_configopts += "-Dllvm=enabled -Dshared-llvm=enabled -Dlibunwind=enabled -Degl=enabled -Dglvnd=enabled " +local_mesa_configopts += "-Dglx=auto -Dgbm=enabled -Dgles1=enabled -Dgles2=enabled -Dgallium-drivers=llvmpipe,radeonsi " +local_mesa_configopts += "-Dvideo-codecs=vc1dec,h264dec,h264enc,h265dec,h265enc,av1dec,av1enc,vp9dec " + +components = [ + ('libglvnd', '1.7.0', { + 'source_urls': ['https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v%(version)s/'], + 'sources': ['%(name)s-v%(version)s.tar.gz'], + 'checksums': ['2b6e15b06aafb4c0b6e2348124808cbd9b291c647299eaaba2e3202f51ff2f3d'], + 'start_dir': '%(namelower)s-v%(version)s', + }), + ('Mesa', '25.2.2', { + 'easyblock': 'EB_Mesa', + 'source_urls': [ + 'https://archive.mesa3d.org/', + 'https://archive.mesa3d.org/older-versions/%(version_major)s.x/', + ], + 'sources': [SOURCELOWER_TAR_XZ], + 'checksums': ['43d7abcd4aa8049d8fd75538344a374104765e81e17b4a6314cee2c0160e4412'], + 'start_dir': '%(namelower)s-%(version)s', + 'preconfigopts': local_pkg_config, + 'configopts': local_mesa_configopts, + }), + ('libGLU', '9.0.3', { + 'source_urls': ['https://archive.mesa3d.org/glu/'], + 'sources': ['glu-%(version)s.tar.xz'], + 'checksums': ['bd43fe12f374b1192eb15fe20e45ff456b9bc26ab57f0eee919f96ca0f8a330f'], + 'start_dir': 'glu-%(version)s', + 'preconfigopts': local_pkg_config, + }), + ('Mesa-demos', '9.0.0', { + 'source_urls': ['https://archive.mesa3d.org/demos/'], + 'sources': [SOURCELOWER_TAR_XZ], + 'checksums': ['3046a3d26a7b051af7ebdd257a5f23bfeb160cad6ed952329cdff1e9f1ed496b'], + 'start_dir': '%(namelower)s-%(version)s', + 'preconfigopts': local_pkg_config, + 'configopts': ' -D osmesa=disabled -D wayland=disabled', + }), +] + +postinstallcmds = [ + 'cd %(installdir)s/lib && ln -sf libGL.so.1.7.0 libGL.so.1', + 'cd %(installdir)s/lib && ln -sf libGLX_mesa.so.0 libGLX_indirect.so.0', +] + +modextrapaths = { + '__EGL_VENDOR_LIBRARY_DIRS': [ + '/etc/glvnd/egl_vendor.d', + '/usr/share/glvnd/egl_vendor.d', + 'share/glvnd/egl_vendor.d/', + ], + 'VK_ADD_DRIVER_FILES': 'share/vulkan/icd.d/', + 'VK_ADDITIONAL_IMPLICIT_LAYER_PATH_ENV_VAR': 'share/vulkan/implicit_layer.d/', + 'VK_ADDITIONAL_EXPLICIT_LAYER_PATH_ENV_VAR': 'share/vulkan/explicit_layer.d/', +} + +modextravars = { + 'EGL_PLATFORM': 'surfaceless', + 'EGL_LOG_LEVEL': 'fatal', + 'KNOB_MAX_WORKER_THREADS': '65535', +} + +sanity_check_all_components = True +sanity_check_paths = { + 'files': [ + 'lib/libEGL_mesa.%s' % SHLIB_EXT, 'lib/libGLESv1_CM.%s' % SHLIB_EXT, + 'lib/libGLESv2.%s' % SHLIB_EXT, 'include/GL/glext.h', + 'include/GL/glx.h', 'include/GL/gl.h', 'include/GL/glxext.h', + 'include/GLES/gl.h', 'include/GLES2/gl2.h', 'include/GLES3/gl3.h', + 'lib/libOpenGL.%s' % SHLIB_EXT, + ], + 'dirs': [] +} + +moduleclass = 'vis'