]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
musl: meson: make musl not define wchar_t in their header
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 9 Jun 2025 04:37:38 +0000 (13:37 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 12 Nov 2025 19:44:00 +0000 (04:44 +0900)
Otherwise, musl defines wchar_t as int, which conflicts with the
assumption by sd-boot, i.e. wchar_t is 2 bytes.

Fixes the following build error:
```
In file included from ../src/boot/efi-log.h:4,
                 from ../src/boot/linux_x86.c:13:
../src/boot/efi.h:19:24: error: conflicting types for 'wchar_t'; have 'short unsigned int'
   19 | typedef __WCHAR_TYPE__ wchar_t;
      |                        ^~~~~~~
In file included from /usr/include/stddef.h:19,
                 from ../src/boot/efi.h:9:
/usr/include/bits/alltypes.h:10:13: note: previous declaration of 'wchar_t' with type 'wchar_t' {aka 'int'}
   10 | typedef int wchar_t;
      |             ^~~~~~~
```

src/boot/meson.build

index ee86af274eb657c17c08b539a136931f4f11f775..3d1f66a6582d97b2d9ee53c81427bf003f9c0edd 100644 (file)
@@ -182,6 +182,11 @@ if get_option('mode') == 'developer' and get_option('debug')
         efi_c_args += '-DEFI_DEBUG'
 endif
 
+if get_option('libc') == 'musl'
+        # To make musl not define wchar_t as int, rather than short.
+        efi_c_args += '-D__DEFINED_wchar_t'
+endif
+
 efi_c_ld_args = [
         '-nostdlib',
         '-static-pie',