From 330542a79fee5562ac779d4ea7da4d5b01d31560 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Mon, 22 Jan 2024 15:58:08 +0100
Subject: [PATCH] Build system: workaround for Meson bug, needed for building
 MATLAB Online package

---
 meson.build | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/meson.build b/meson.build
index 261efb0765..c0a2008167 100644
--- a/meson.build
+++ b/meson.build
@@ -160,7 +160,20 @@ if get_option('build_for') == 'matlab'
   umfpack_dep = declare_dependency(link_args : '-lmwumfpack', dependencies : blas_dep)
   ut_dep = declare_dependency(link_args : '-lut')
 
-  slicot_dep = declare_dependency(dependencies : [ fortran_compiler.find_library('slicot64_pic'), blas_dep, lapack_dep ])
+  # Workaround for Meson bug https://github.com/mesonbuild/meson/issues/12757
+  # Use the C compiler as a fallback for detecting SLICOT under Linux with
+  # prefer_static=true (but still try the Fortran compiler to honour the -B
+  # option in fortran_args, as documented). Needed for building the MATLAB
+  # Online package.
+  if get_option('prefer_static') and host_machine.system() == 'linux'
+    slicot_dep_tmp = fortran_compiler.find_library('slicot64_pic', required : false)
+    if not slicot_dep_tmp.found()
+      slicot_dep_tmp = c_compiler.find_library('slicot64_pic')
+    endif
+    slicot_dep = declare_dependency(dependencies : [ slicot_dep_tmp, blas_dep, lapack_dep ])
+  else
+    slicot_dep = declare_dependency(dependencies : [ fortran_compiler.find_library('slicot64_pic'), blas_dep, lapack_dep ])
+  endif
 else # Octave build
   octave_exe = find_program('octave', required : not meson.is_cross_build(), disabler : true)
   mkoctfile_exe = find_program('mkoctfile')
-- 
GitLab