fex: Upgrade to FEX-2607 release

Bump the FEX srcrev to the FEX-2607 tag and resync the vendored externals
to that release's submodule pointers: drop jemalloc (non-glibc) and
robin-map, which upstream replaced with rpmalloc and unordered_dense.

Additional build fixes required by this release:

- Disable FEX's internal ccache (-DENABLE_CCACHE=OFF); it collides with
  OE's ccache class and double-wraps the compiler.
- Build fmt from the bundled External/fmt submodule instead of the system
  copy. FEX-2607 formats std::byte spans via fmt::join, which its pinned
  fmt 12.1.0 supports but oe-core's newer fmt 12.2.0 rejects.
- Stop FEX from stripping binaries at link time so OE can split out debug
  information and the already-stripped QA check passes.

Built for qemuarm64.

Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Khem Raj
2026-07-09 08:26:07 -07:00
parent 9cca0fa277
commit 5c93a46759
2 changed files with 40 additions and 6 deletions
@@ -0,0 +1,28 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 9 Jul 2026 00:00:00 +0000
Subject: [PATCH] LinkerGC: Do not strip binaries at link time
FEX links Release binaries with --strip-all, which discards the symbol
table before OE gets a chance to split out debug information. This makes
the build fail the OE already-stripped QA check and prevents shipping
-dbg packages. Let OE handle stripping instead.
Upstream-Status: Inappropriate [OE handles stripping and debug packaging]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Data/CMake/LinkerGC.cmake | 1 -
1 file changed, 1 deletion(-)
diff --git a/Data/CMake/LinkerGC.cmake b/Data/CMake/LinkerGC.cmake
index 1111111..2222222 100644
--- a/Data/CMake/LinkerGC.cmake
+++ b/Data/CMake/LinkerGC.cmake
@@ -9,7 +9,6 @@ macro(LinkerGC target)
if (CMAKE_BUILD_TYPE MATCHES "RELEASE")
target_link_options(${target} PRIVATE
"LINKER:--gc-sections"
- "LINKER:--strip-all"
"LINKER:--as-needed")
endif()
endmacro()
@@ -13,25 +13,30 @@ SRC_URI = " \
git://github.com/Sonicadvance1/cpp-optparse.git;name=cpp-optparse;subdir=${S}/Source/Common/cpp-optparse;protocol=https;nobranch=1 \
git://github.com/FEX-Emu/drm-headers.git;name=fex-drm;subdir=${S}/External/drm-headers;protocol=https;nobranch=1 \
git://github.com/Cyan4973/xxHash.git;name=xxhash;subdir=${S}/External/xxhash;protocol=https;nobranch=1 \
git://github.com/FEX-Emu/jemalloc.git;name=jemalloc;subdir=${S}/External/jemalloc;protocol=https;nobranch=1 \
git://github.com/fmtlib/fmt.git;name=fmt;subdir=${S}/External/fmt;protocol=https;nobranch=1 \
git://github.com/FEX-Emu/jemalloc.git;name=jemalloc-glibc;subdir=${S}/External/jemalloc_glibc;protocol=https;nobranch=1 \
git://github.com/ericniebler/range-v3.git;name=range-v3;subdir=${S}/External/range-v3;protocol=https;nobranch=1 \
git://github.com/FEX-Emu/robin-map.git;name=robin-map;subdir=${S}/External/robin-map;protocol=https;nobranch=1 \
git://github.com/FEX-Emu/rpmalloc.git;name=rpmalloc;subdir=${S}/External/rpmalloc;protocol=https;nobranch=1 \
git://github.com/martinus/unordered_dense.git;name=unordered-dense;subdir=${S}/External/unordered_dense;protocol=https;nobranch=1 \
file://0001-LinkerGC-Do-not-strip-binaries-at-link-time.patch \
"
SRCREV_FORMAT = "fex"
SRCREV_fex = "1188c90c10569ca800d7a99c11e59cfeab5e2cc9"
SRCREV_fex = "1cc4b93e7a71c883ec021b71359f136394dc1f3c"
SRCREV_cpp-optparse = "9f94388a339fcbb0bc95c17768eb786c85988f6e"
SRCREV_fex-drm = "3e49836995c1dcb3df709440ad2f270b569c6a5f"
SRCREV_xxhash = "e626a72bc2321cd320e953a0ccf1584cad60f363"
SRCREV_jemalloc = "97d986993dc735a2022856e7e9fdfa1180e8527a"
SRCREV_fmt = "407c905e45ad75fc29bf0f9bb7c5c2fd3475976f"
SRCREV_jemalloc-glibc = "8436195ad5e1bc347d9b39743af3d29abee59f06"
SRCREV_robin-map = "d5683d9f1891e5b04e3e3b2192b5349dc8d814ea"
SRCREV_rpmalloc = "1d85c246cd827ead6865f4f880d4fef53f2b1864"
SRCREV_unordered-dense = "3234af2c03549bc85656bfd3a86993bf1cd8aef1"
SRCREV_range-v3 = "ca1388fb9da8e69314dda222dc7b139ca84e092f"
# fmt is built from the bundled External/fmt submodule rather than the system
# copy: FEX-2607 formats std::byte spans via fmt::join, which its pinned fmt
# 12.1.0 supports but oe-core's newer fmt (12.2.0) rejects.
DEPENDS = " \
catch2 \
fmt \
libdrm \
nasm-native \
vulkan-headers \
@@ -42,6 +47,7 @@ PACKAGECONFIG[qt] = "-DBUILD_FEXCONFIG=ON,-DBUILD_FEXCONFIG=OFF,qtbase qttools-n
EXTRA_OECMAKE += " \
-DBUILD_TESTING=OFF \
-DENABLE_CCACHE=OFF \
-DENABLE_VIXL_DISASSEMBLER=OFF \
-DENABLE_VIXL_SIMULATOR=OFF \
-DDATA_DIRECTORY=${datadir} \