diff --git a/modules/camera/config.py b/modules/camera/config.py index 7b368d219368..fa229ef2f5a8 100644 --- a/modules/camera/config.py +++ b/modules/camera/config.py @@ -1,4 +1,8 @@ def can_build(env, platform): + import sys + + if sys.platform.startswith("freebsd"): + return False return platform == "macos" or platform == "windows" or platform == "linuxbsd" diff --git a/modules/openxr/SCsub b/modules/openxr/SCsub index 48c87bcd59cd..edfe0bbfad6f 100644 --- a/modules/openxr/SCsub +++ b/modules/openxr/SCsub @@ -1,6 +1,8 @@ #!/usr/bin/env python from misc.utility.scons_hints import * +import sys + Import("env") Import("env_modules") @@ -29,7 +31,9 @@ elif env["platform"] == "linuxbsd": env_openxr.AppendUnique(CPPDEFINES=["XR_USE_PLATFORM_EGL"]) # FIXME: Review what needs to be set for Android and macOS. - env_openxr.AppendUnique(CPPDEFINES=["HAVE_SECURE_GETENV"]) + # FreeBSD uses non-standard getenv functions. + if not sys.platform.startswith("freebsd"): + env_openxr.AppendUnique(CPPDEFINES=["HAVE_SECURE_GETENV"]) elif env["platform"] == "windows": env_openxr.AppendUnique(CPPDEFINES=["XR_OS_WINDOWS", "NOMINMAX", "XR_USE_PLATFORM_WIN32"]) elif env["platform"] == "macos": diff --git a/platform/linuxbsd/wayland/wayland_thread.cpp b/platform/linuxbsd/wayland/wayland_thread.cpp index f1aac4f0696c..8e3dc7558184 100644 --- a/platform/linuxbsd/wayland/wayland_thread.cpp +++ b/platform/linuxbsd/wayland/wayland_thread.cpp @@ -32,8 +32,12 @@ #ifdef WAYLAND_ENABLED -// FIXME: Does this cause issues with *BSDs? +#ifdef __FreeBSD__ +#include +#else +// Assume Linux. #include +#endif // For the actual polling thread. #include diff --git a/thirdparty/linuxbsd_headers/alsa/asoundlib.h b/thirdparty/linuxbsd_headers/alsa/asoundlib.h index a5461943825c..598175403cda 100644 --- a/thirdparty/linuxbsd_headers/alsa/asoundlib.h +++ b/thirdparty/linuxbsd_headers/alsa/asoundlib.h @@ -38,7 +38,11 @@ #include #include #include +#ifdef __FreeBSD__ +#include +#else #include +#endif // __FreeBSD__ #ifndef __GNUC__ #define __inline__ inline diff --git a/thirdparty/linuxbsd_headers/alsa/patches/freebsd_endian.diff b/thirdparty/linuxbsd_headers/alsa/patches/freebsd_endian.diff new file mode 100644 index 000000000000..f104d9df8547 --- /dev/null +++ b/thirdparty/linuxbsd_headers/alsa/patches/freebsd_endian.diff @@ -0,0 +1,16 @@ +diff --git a/thirdparty/linuxbsd_headers/alsa/asoundlib.h b/thirdparty/linuxbsd_headers/alsa/asoundlib.h +index a546194382..598175403c 100644 +--- a/thirdparty/linuxbsd_headers/alsa/asoundlib.h ++++ b/thirdparty/linuxbsd_headers/alsa/asoundlib.h +@@ -38,7 +38,11 @@ + #include + #include + #include ++#ifdef __FreeBSD__ ++#include ++#else + #include ++#endif // __FreeBSD__ + + #ifndef __GNUC__ + #define __inline__ inline