> On 28 Sep 2025, at 4:06 pm, Chris Sherlock <[email protected]> wrote:
> 
> 
> Sent from my iPhone
> 
>> On 28 Sep 2025, at 12:58 am, Patrick Luby <[email protected]> wrote:
>> 
>> 
>> 
>>> On Sep 26, 2025, at 10:35 PM, Chris Sherlock <[email protected]> 
>>> wrote:
>>> 
>>> It is :-) that seems to a Darwin command, is that a script I don’t know 
>>> about?
>> 
>> The script is the ./configure command at the top of the source tree. When 
>> you run ./autogen.sh, it runs “autoconf” to create the ./configure script 
>> form ./configure.ac and then ./autogen.sh runs ./configure with all of the 
>> settings in your ./autogen.input if it exists.
>> 
>> The chunk of the ./configure script that checks the meson version on macOS 
>> is in the following Gerrit patch. That is where there is an “if $_os is 
>> Darwin and the macOS SDK is >= to 260000” command that I was referring to:
>> 
>> https://gerrit.libreoffice.org/c/core/+/188863/8/configure.ac
>> 
>> BTW, $_os is set to “Darwin” on macOS. Presumably from “uname“. That command 
>> with no arguments returns “Darwin” for me. “uname -5”  returns "uname: 
>> illegal option — 5” so are you using something other than /usr/bin/uname?
>> 
>> Patrick
> 
> Sorry, that was a typo - I meant uname -r
> 
> I appreciate the explanation, my shell scripting skills are obviously rusty! 
> The script appears fine, but the option in the compiler_commands.json is 
> definitely wrong.
> 
> Is the harfbuzz compiler_commands.json generated by a script? 
> 
> Chris

So I have done a bit of digging, and the meson.build needs to detect the 
version of macOS being used. 

So after a bit of research, I worked out the following code snippet that you 
add after the project() directive in the root meson.build file in harfbuzz:

if host_machine.system() == 'darwin'
    if host_machine.cpu_family() == 'aarch64' or host_machine.cpu_family() == 
'x86_64'
        # Set the hardening mode for C and C++ compilers
        
add_project_arguments('-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE',
 language: ['c', 'cpp'])
        # Undefine the old macro to ensure it's not used
        add_project_arguments('-U_LIBCPP_ENABLE_ASSERTIONS', language: ['c', 
'cpp'])
    endif
endif

The problem is… how on earth is that generated? It does seem like a Harfbuzz 
issue… but I don’t know how we propose a change like this…

Chris

Reply via email to