From d4032f7d09b4d34d3da3cb2bf5521557d80efa21 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 12 May 2025 18:46:13 +0200 Subject: [PATCH] demos: Build with -fno-lto. Some versions of Clang do not properly pass include paths to the assembler when LTO is enabled. That's a problem for the DEMO_EMBED macro used by the demos, since it relies on .incbin. To make matters even better, compilation fails, but doesn't return an error code; the resulting binary is simply broken. Fortunately we don't really care about LTO for the demos, so we can simply disable it. See also https://github.com/llvm/llvm-project/issues/112920 Thanks to Giovanni for tracking down some of the pieces of this issue. --- configure.ac | 1 + m4/check-cflags.m4 | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 6b1bdcee2..66a9b6029 100644 --- a/configure.ac +++ b/configure.ac @@ -197,6 +197,7 @@ case $host_os in AC_SUBST([DEMO_CFLAGS],[$XCB_CFLAGS]) ;; esac +VKD3D_CHECK_CFLAGS([-fno-lto], [DEMO_CFLAGS="$DEMO_CFLAGS -fno-lto"]) AM_CONDITIONAL([BUILD_DEMOS], [test "x$enable_demos" = "xyes"]) AM_CONDITIONAL([BUILD_DOC], [test $DX_FLAG_doc = 1]) AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_tests" != "xno"]) diff --git a/m4/check-cflags.m4 b/m4/check-cflags.m4 index 31e36c679..231657d5d 100644 --- a/m4/check-cflags.m4 +++ b/m4/check-cflags.m4 @@ -2,7 +2,7 @@ dnl dnl This file contains code derived from WINE_TRY_CFLAGS() and is used courtesy of Alexandre Julliard. dnl -dnl VKD3D_CHECK_CFLAGS(flags) +dnl VKD3D_CHECK_CFLAGS(flags,[action-if-yes,[action-if-no]]) AC_DEFUN([VKD3D_CHECK_CFLAGS], [AS_VAR_PUSHDEF([vkd3d_cflags], vkd3d_cv_cflags_[[$1]])dnl AC_CACHE_CHECK([whether the compiler supports $1], vkd3d_cflags, @@ -12,5 +12,5 @@ AC_DEFUN([VKD3D_CHECK_CFLAGS], [AS_VAR_SET(vkd3d_cflags, yes)], [AS_VAR_SET(vkd3d_cflags, no)]) CFLAGS=$vkd3d_cflags_saved]) - AS_VAR_IF([vkd3d_cflags], [yes], [VKD3D_CFLAGS="$VKD3D_CFLAGS $1"])dnl + AS_VAR_IF([vkd3d_cflags], [yes], [m4_default([$2], [VKD3D_CFLAGS="$VKD3D_CFLAGS $1"])], [$3])dnl AS_VAR_POPDEF([vkd3d_cflags])])