From c5516e0f7cd0c7075381b15d3194a640f4d35ee3 Mon Sep 17 00:00:00 2001 From: Alex Richardson Date: Mon, 12 Jul 2021 09:22:48 +0100 Subject: [PATCH] * meson.build: Fix build for other UNIX systems (e.g., FreeBSD). Without this change the build of `unix/ftsystem.c` fails because the `ftconfig.h` header that defines macros such as `HAVE_UNISTD_H` and `HAVE_FCNTL_H` is only being generated for Linux, macOS, and Cygwin systems: ``` .../builds/unix/ftsystem.c:258:32: error: use of undeclared identifier 'O_RDONLY' file = open( filepathname, O_RDONLY ); ``` Instead of hardcoding a list of operating systems for this check, update the logic that decides whether to build the file and set a boolean flag that can be checked instead. --- ChangeLog | 19 +++++++++++++++++++ meson.build | 4 +++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 677cd36a6..d8ef3e2f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2021-07-12 Alex Richardson + + * meson.build: Fix build for other UNIX systems (e.g., FreeBSD). + + Without this change the build of `unix/ftsystem.c` fails because the + `ftconfig.h` header that defines macros such as `HAVE_UNISTD_H` and + `HAVE_FCNTL_H` is only being generated for Linux, macOS, and Cygwin + systems: + + ``` + .../builds/unix/ftsystem.c:258:32: error: + use of undeclared identifier 'O_RDONLY' + file = open( filepathname, O_RDONLY ); + ``` + + Instead of hardcoding a list of operating systems for this check, + update the logic that decides whether to build the file and set a + boolean flag that can be checked instead. + 2021-07-12 Werner Lemberg [autofit] More clean-ups. diff --git a/meson.build b/meson.build index 887975ffc..0eb780bfd 100644 --- a/meson.build +++ b/meson.build @@ -193,6 +193,7 @@ has_sys_mman_h = cc.has_header('sys/mman.h') mmap_option = get_option('mmap') +use_unix_ftsystem_c = false if mmap_option.disabled() ft2_sources += files(['src/base/ftsystem.c',]) elif host_machine.system() == 'windows' @@ -201,6 +202,7 @@ else if has_unistd_h and has_fcntl_h and has_sys_mman_h # This version of `ftsystem.c` uses `mmap` to read input font files. ft2_sources += files(['builds/unix/ftsystem.c',]) + use_unix_ftsystem_c = true elif mmap_option.enabled() error('mmap was enabled via options but is not available,' + ' required headers were not found!') @@ -321,7 +323,7 @@ if has_fcntl_h ftconfig_command += '--enable=HAVE_FCNTL_H' endif -if host_machine.system() in ['linux', 'darwin', 'cygwin'] +if use_unix_ftsystem_c ftconfig_h_in = files('builds/unix/ftconfig.h.in') ftconfig_h = custom_target('ftconfig.h', input: ftconfig_h_in,