This is an automated email from the git hooks/post-receive script.
git pushed a commit to reference refs/pull/130/head
in repository efl.
View the commit online.
commit 4be3d705dad05addac15e61f1e0debe1ef732995
Author: moihack <[email protected]>
AuthorDate: Fri Jul 10 14:36:47 2026 +0200
feature: Add initial NetBSD support
Not strictly required to compile EFL and/or Enlightenment under NetBSD.
Resolves some runtime errors in setup wizard and freet in NetBSD.
Built with: meson build meson build -Dsystemd=false -Dv4l2=false -Deeze=false -Dinput=false
Options based on OpenBSD EFL build instructions.
Based on kikadf and Matthew Danielson
patches for Enlightenment in pkgsrc-wip.
https://github.com/NetBSD/pkgsrc-wip/tree/master/efl/patches
@feature
---
src/lib/ecore/Ecore.h | 2 +-
src/lib/ecore/Efl_Core.h | 2 +-
src/lib/ecore/ecore_exe_posix.c | 4 ++--
src/lib/ecore/efl_core_proc_env.c | 6 +++---
src/lib/ecore/efl_exe.c | 6 +++---
src/lib/eet/eet_image.c | 4 ++--
src/lib/eina/eina_file_posix.c | 12 +++++++++++-
src/lib/elementary/Efl_Ui.h | 2 +-
8 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/src/lib/ecore/Ecore.h b/src/lib/ecore/Ecore.h
index e87ccc6093..291575f848 100644
--- a/src/lib/ecore/Ecore.h
+++ b/src/lib/ecore/Ecore.h
@@ -307,7 +307,7 @@
# define WIN32_LEAN_AND_MEAN
# include <winsock2.h>
# undef WIN32_LEAN_AND_MEAN
-#elif defined (__FreeBSD__) || defined (__OpenBSD__)
+#elif defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__)
# include <sys/select.h>
# include <signal.h>
#elif defined (__ANDROID__)
diff --git a/src/lib/ecore/Efl_Core.h b/src/lib/ecore/Efl_Core.h
index 7e80819b83..ebfafedda2 100644
--- a/src/lib/ecore/Efl_Core.h
+++ b/src/lib/ecore/Efl_Core.h
@@ -36,7 +36,7 @@
# define WIN32_LEAN_AND_MEAN
# include <winsock2.h>
# undef WIN32_LEAN_AND_MEAN
-#elif defined (__FreeBSD__) || defined (__OpenBSD__)
+#elif defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__)
# include <sys/select.h>
# include <signal.h>
#elif defined (__ANDROID__)
diff --git a/src/lib/ecore/ecore_exe_posix.c b/src/lib/ecore/ecore_exe_posix.c
index 635fc0678b..00ef10edb0 100644
--- a/src/lib/ecore/ecore_exe_posix.c
+++ b/src/lib/ecore/ecore_exe_posix.c
@@ -218,7 +218,7 @@ _impl_ecore_exe_run_priority_get(void)
return run_pri;
}
-#if defined (__FreeBSD__) || defined (__OpenBSD__)
+#if defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__)
# include <dlfcn.h>
static char ***_dl_environ;
#else
@@ -350,7 +350,7 @@ _impl_ecore_exe_efl_object_finalize(Eo *obj, Ecore_Exe_Data *exe)
#ifdef HAVE_SYSTEMD
char **env = NULL, **e;
-# if defined (__FreeBSD__) || defined (__OpenBSD__)
+# if defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__)
_dl_environ = dlsym(NULL, "environ");
env = *_dl_environ;
# else
diff --git a/src/lib/ecore/efl_core_proc_env.c b/src/lib/ecore/efl_core_proc_env.c
index 9177d822f1..18e385fb1d 100644
--- a/src/lib/ecore/efl_core_proc_env.c
+++ b/src/lib/ecore/efl_core_proc_env.c
@@ -13,7 +13,7 @@
#define MY_CLASS EFL_CORE_PROC_ENV_CLASS
-#if defined (__FreeBSD__) || defined (__OpenBSD__)
+#if defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__)
# include <dlfcn.h>
static char ***_dl_environ;
#elif !defined(_MSC_VER)
@@ -42,7 +42,7 @@ _sync(Efl_Core_Env *obj, Efl_Core_Proc_Env_Data *pd)
existing_keys = eina_list_append(existing_keys, key);
}
-#if defined (__FreeBSD__) || defined (__OpenBSD__)
+#if defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__)
_dl_environ = dlsym(NULL, "environ");
if (_dl_environ) loc_env = *_dl_environ;
else ERR("Can't find envrion symbol");
@@ -121,7 +121,7 @@ _efl_core_proc_env_efl_core_env_clear(Eo *obj, Efl_Core_Proc_Env_Data *pd)
#ifdef HAVE_CLEARENV
clearenv();
#else
-# if defined (__FreeBSD__) || defined (__OpenBSD__)
+# if defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__)
_dl_environ = dlsym(NULL, "environ");
if (_dl_environ) *_dl_environ = NULL;
else ERR("Can't find envrion symbol");
diff --git a/src/lib/ecore/efl_exe.c b/src/lib/ecore/efl_exe.c
index 7239bcdf6f..2210f6d14e 100644
--- a/src/lib/ecore/efl_exe.c
+++ b/src/lib/ecore/efl_exe.c
@@ -32,7 +32,7 @@
# include <sys/wait.h>
# endif
# ifndef HAVE_CLEARENV
-# if defined (__FreeBSD__) || defined (__OpenBSD__)
+# if defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__)
# include <dlfcn.h>
static char ***_dl_environ;
# else
@@ -577,7 +577,7 @@ _efl_exe_efl_task_run(Eo *obj, Efl_Exe_Data *pd)
// clear systemd notify socket... only relevant for systemd world,
// otherwise shouldn't be trouble
-# if defined (__FreeBSD__) || defined (__OpenBSD__)
+# if defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__)
_dl_environ = dlsym(NULL, "environ");
if (_dl_environ) env = *_dl_environ;
# else
@@ -620,7 +620,7 @@ _efl_exe_efl_task_run(Eo *obj, Efl_Exe_Data *pd)
}
// yes - we dont free itr or itr2 - we're going to exec below or exit
// also put newenv array on stack pointign to the strings in the env
-# if defined (__FreeBSD__) || defined (__OpenBSD__)
+# if defined (__FreeBSD__) || defined (__OpenBSD__) || defined(__NetBSD__)
if (_dl_environ) *_dl_environ = newenv;
else ERR("Can't find envrion symbol");
# else
diff --git a/src/lib/eet/eet_image.c b/src/lib/eet/eet_image.c
index 3cfb5fca19..245db580cc 100644
--- a/src/lib/eet/eet_image.c
+++ b/src/lib/eet/eet_image.c
@@ -2,9 +2,9 @@
# include <config.h>
#endif /* ifdef HAVE_CONFIG_H */
-#ifdef __OpenBSD__
+#if defined(__OpenBSD__) || defined(__NetBSD__)
# include <sys/types.h>
-#endif /* ifdef __OpenBSD__ */
+#endif
#include <stdio.h>
#include <string.h>
diff --git a/src/lib/eina/eina_file_posix.c b/src/lib/eina/eina_file_posix.c
index 790c7c3c70..a1d0a08e4d 100644
--- a/src/lib/eina/eina_file_posix.c
+++ b/src/lib/eina/eina_file_posix.c
@@ -1360,6 +1360,16 @@ typedef struct
unsigned char ____pad[4];
char d_name[4096];
} Dirent;
+#elif defined(__NetBSD__)
+# define do_getdents(fd, buf, size) getdents(fd, buf, size)
+typedef struct
+{
+ ino_t d_fileno;
+ uint16_t d_reclen;
+ uint16_t d_namlen;
+ uint8_t d_type;
+ char d_name[4096];
+} Dirent;
#elif defined(__linux__)
# define do_getdents(fd, buf, size) syscall(SYS_getdents64, fd, buf, size)
// getdents64 added un glibc 2.30 ... so use raw syscall - will work
@@ -1410,7 +1420,7 @@ eina_file_close_from(int fd, int *except_fd)
#else
#ifdef HAVE_DIRENT_H
//# if 0
-# if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__linux__)
+# if defined(__FreeBSD__) || defined(__OpenBSD__) || defined (__NetBSD__) || defined(__linux__)
int dirfd;
Dirent *d;
char buf[4096 + 128];
diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h
index afae5983e4..e8cc2eb1d4 100644
--- a/src/lib/elementary/Efl_Ui.h
+++ b/src/lib/elementary/Efl_Ui.h
@@ -46,7 +46,7 @@
# define WIN32_LEAN_AND_MEAN
# include <winsock2.h>
# undef WIN32_LEAN_AND_MEAN
-#elif defined (__FreeBSD__) || defined (__OpenBSD__)
+#elif defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__NetBSD__)
# include <sys/select.h>
# include <signal.h>
#elif defined (__ANDROID__)
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.