Meta: Patch angle vcpkg to build on FreeBSD

This commit is contained in:
Undefine 2025-06-30 13:12:39 +02:00 committed by Andrew Kaster
commit 1a42fc4fcd
Notes: github-actions[bot] 2025-07-15 19:46:47 +00:00
5 changed files with 63 additions and 3 deletions

View file

@ -44,7 +44,7 @@ add_compile_options("$<$<CONFIG:DEBUG>:-DANGLE_ENABLE_DEBUG_ANNOTATIONS>")
if(WIN32)
add_definitions(-DANGLE_IS_WIN)
endif()
if(LINUX)
if(LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
add_definitions(-DANGLE_IS_LINUX)
endif()
if(ANGLE_IS_64_BIT_CPU)
@ -258,6 +258,9 @@ if (USE_ANGLE_EGL OR ENABLE_WEBGL)
target_compile_definitions(ANGLE PUBLIC ${ANGLE_DEFINITIONS})
target_link_libraries(ANGLE PRIVATE ZLIB::ZLIB ${CMAKE_DL_LIBS})
find_package(Threads REQUIRED)
target_link_libraries(ANGLE PRIVATE Threads::Threads)
target_compile_definitions(ANGLEFramework INTERFACE ${gl_prototypes})
add_library(GLESv2 ${GLESv2_LIBRARY_TYPE}

View file

@ -1,4 +1,4 @@
list(APPEND ANGLE_DEFINITIONS ANGLE_PLATFORM_LINUX USE_SYSTEM_EGL)
list(APPEND ANGLE_DEFINITIONS USE_SYSTEM_EGL)
include(linux.cmake)
if (USE_OPENGL)

View file

@ -0,0 +1,56 @@
diff --git a/src/common/platform.h b/src/common/platform.h
index 44f485f1ce..fbbbfa7919 100644
--- a/src/common/platform.h
+++ b/src/common/platform.h
@@ -23,7 +23,10 @@
#elif defined(__linux__) || defined(EMSCRIPTEN)
# define ANGLE_PLATFORM_LINUX 1
# define ANGLE_PLATFORM_POSIX 1
-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
+#elif defined(__FreeBSD__)
+# define ANGLE_PLATFORM_FREEBSD 1
+# define ANGLE_PLATFORM_POSIX 1
+#elif defined(__OpenBSD__) || defined(__NetBSD__) || \
defined(__DragonFly__) || defined(__sun) || defined(__GLIBC__) || defined(__GNU__) || \
defined(__QNX__) || defined(__Fuchsia__) || defined(__HAIKU__)
# define ANGLE_PLATFORM_POSIX 1
diff --git a/src/libANGLE/Display.cpp b/src/libANGLE/Display.cpp
index d261bf1e5a..44c1d91bc3 100644
--- a/src/libANGLE/Display.cpp
+++ b/src/libANGLE/Display.cpp
@@ -58,7 +58,7 @@
# include "libANGLE/renderer/gl/wgl/DisplayWGL.h"
# elif ANGLE_ENABLE_CGL
# include "libANGLE/renderer/gl/cgl/DisplayCGL.h"
-# elif defined(ANGLE_PLATFORM_LINUX)
+# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_FREEBSD)
# include "libANGLE/renderer/gl/egl/DisplayEGL.h"
# if defined(ANGLE_USE_X11)
# include "libANGLE/renderer/gl/glx/DisplayGLX_api.h"
@@ -422,7 +422,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib displayType,
impl = new rx::DisplayCGL(state);
break;
-# elif defined(ANGLE_PLATFORM_LINUX)
+# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_FREEBSD)
# if defined(ANGLE_USE_GBM)
if (platformType == 0)
{
@@ -468,7 +468,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib displayType,
#if defined(ANGLE_ENABLE_OPENGL)
# if defined(ANGLE_PLATFORM_WINDOWS)
impl = new rx::DisplayWGL(state);
-# elif defined(ANGLE_PLATFORM_LINUX)
+# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_FREEBSD)
# if defined(ANGLE_USE_GBM)
if (platformType == 0)
{
@@ -519,7 +519,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(EGLAttrib displayType,
impl = rx::CreateVulkanWin32Display(state);
}
break;
-# elif defined(ANGLE_PLATFORM_LINUX)
+# elif defined(ANGLE_PLATFORM_LINUX) || defined(ANGLE_PLATFORM_FREEBSD)
# if defined(ANGLE_USE_GBM)
if (platformType == EGL_PLATFORM_GBM_KHR && rx::IsVulkanGbmDisplayAvailable())
{

View file

@ -49,6 +49,7 @@ vcpkg_from_github(
# On update check headers against opengl-registry
PATCHES
001-fix-builder-error.patch
fix-freebsd.patch
)
# Generate angle_commit.h

View file

@ -10,7 +10,7 @@
},
{
"name": "angle",
"platform": "linux | windows | android"
"platform": "linux | windows | android | freebsd"
},
{
"name": "curl",