diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9dfa67b77..5b8ba5e0c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -893,6 +893,8 @@ target_sources(${PROJECT_NAME} PRIVATE
target_sources(${PROJECT_NAME} PRIVATE
core/wsi/context.h
+ core/wsi/libretro.cpp
+ core/wsi/libretro.h
core/wsi/switcher.cpp)
if(USE_OPENGL)
@@ -902,8 +904,6 @@ if(USE_OPENGL)
core/wsi/egl.h
core/wsi/gl_context.cpp
core/wsi/gl_context.h
- core/wsi/libretro.cpp
- core/wsi/libretro.h
core/wsi/osx.cpp
core/wsi/osx.h
core/wsi/sdl.cpp
diff --git a/core/wsi/libretro.cpp b/core/wsi/libretro.cpp
index d43ff1293..2a10ca91b 100644
--- a/core/wsi/libretro.cpp
+++ b/core/wsi/libretro.cpp
@@ -19,7 +19,10 @@
#include "libretro.h"
#ifdef LIBRETRO
+
+#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
LibretroGraphicsContext theGLContext;
+#endif
GraphicsContext *GraphicsContext::instance;
#endif
diff --git a/core/wsi/libretro.h b/core/wsi/libretro.h
index 8f6551b3d..1b4e25190 100644
--- a/core/wsi/libretro.h
+++ b/core/wsi/libretro.h
@@ -17,7 +17,7 @@
along with Flycast. If not, see .
*/
#pragma once
-#ifdef LIBRETRO
+#if defined(LIBRETRO) && (defined(HAVE_OPENGL) || defined(HAVE_OPENGLES))
#include "gl_context.h"
#include
#include
diff --git a/shell/libretro/libretro.cpp b/shell/libretro/libretro.cpp
index 4cab3d839..03b839c93 100644
--- a/shell/libretro/libretro.cpp
+++ b/shell/libretro/libretro.cpp
@@ -36,6 +36,7 @@
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
#include
+#include "wsi/gl_context.h"
#endif
#ifdef HAVE_VULKAN
#include "rend/vulkan/vulkan_context.h"
@@ -62,7 +63,6 @@
#include "rend/CustomTexture.h"
#include "rend/osd.h"
#include "cfg/option.h"
-#include "wsi/gl_context.h"
#include "version.h"
constexpr char slash = path_default_slash_c();