build: add proper dependency checking to configure.ac

We build several tools inside of this repository and we need to make sure
all dependencies are met. Furthermore, we must make sure that default
values are recognized even on dependencies.
Hence, this reworks the whole configure.ac handling and does some renaming
of the constants that are used all over the source.

We need to test this some more weeks, but it should finally be a proper
autotools handling that we can release with kmscon-6.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
David Herrmann 2012-10-23 11:35:49 +02:00
parent 9e0db18fb9
commit 696adf965a
10 changed files with 1079 additions and 789 deletions

View File

@ -15,17 +15,6 @@ CLEANFILES =
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA =
#
# Build targets
#
# kmscon: Main kmscon program
# test_output: Test program for the display graphics subsystem
# test_vt: Test program for the VT subsystem
# test_input: Test program for the input subsystem
# libkmscon-core: Static core library for kmscon and test programs
# genshader: Program used to convert shaders into C-source files
#
bin_PROGRAMS =
check_PROGRAMS =
noinst_PROGRAMS = \
@ -39,8 +28,7 @@ lib_LTLIBRARIES =
# Make all files include "config.h" by default. This shouldn't cause any
# problems and we cannot forget to include it anymore.
#
# Also make the linker discard all unused symbols as we are not building a
# shared library.
# Also make the linker discard all unused symbols.
#
# When compiling in debug mode, we enable debug symbols so debugging with gdb
# is easier. If optimizations are disabled, we pass -O0 to the compiler.
@ -51,8 +39,7 @@ AM_CFLAGS = \
-Wall
AM_CPPFLAGS = \
-include $(top_builddir)/config.h \
-I $(srcdir)/src \
-I $(srcdir)/external
-I $(srcdir)/src
AM_LDFLAGS = \
-Wl,--as-needed
@ -71,6 +58,9 @@ endif
# The SHL subsystem contains several small code pieces used all over kmscon and
# other applications.
#
# Simply include $(SHL_*) in your source-file list. Except for SHL_MISC none of
# these have external dependencies. SHL_MISC needs xkbcommon.
#
SHL_DLIST = \
src/shl_dlist.h
@ -101,7 +91,7 @@ SHL_MISC = \
if BUILD_ENABLE_ELOOP
lib_LTLIBRARIES += libeloop.la
include_HEADERS += src/eloop.h
pkgconfig_DATA += libeloop.pc
pkgconfig_DATA += src/libeloop.pc
endif
libeloop_la_SOURCES = \
@ -111,20 +101,23 @@ libeloop_la_SOURCES = \
src/eloop.h \
src/eloop.c
if BUILD_ENABLE_DBUS
libeloop_la_CPPFLAGS = \
$(AM_CPPFLAGS)
libeloop_la_LIBADD =
libeloop_la_LDFLAGS = \
-version-info 1:0:0
if BUILD_ENABLE_ELOOP_DBUS
libeloop_la_SOURCES += \
external/dbus-common.h \
external/dbus-loop.h \
external/dbus-loop.c
endif
libeloop_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
libeloop_la_CPPFLAGS += \
$(DBUS_CFLAGS)
libeloop_la_LIBADD = \
libeloop_la_LIBADD += \
$(DBUS_LIBS)
libeloop_la_LDFLAGS = \
-version-info 1:0:0
endif
#
# libtsm
@ -134,12 +127,14 @@ libeloop_la_LDFLAGS = \
#
if BUILD_ENABLE_TSM
lib_LTLIBRARIES += libtsm.la
lib_LTLIBRARIES += \
libtsm.la
include_HEADERS += \
src/tsm_screen.h \
src/tsm_unicode.h \
src/tsm_vte.h
pkgconfig_DATA += libtsm.pc
pkgconfig_DATA += \
src/libtsm.pc
endif
libtsm_la_SOURCES = \
@ -173,7 +168,7 @@ libtsm_la_LDFLAGS = \
if BUILD_ENABLE_UTERM
lib_LTLIBRARIES += libuterm.la
include_HEADERS += src/uterm.h
pkgconfig_DATA += libuterm.pc
pkgconfig_DATA += src/libuterm.pc
endif
libuterm_la_SOURCES = \
@ -188,48 +183,56 @@ libuterm_la_SOURCES = \
src/uterm_vt.c \
src/uterm_input.c \
src/uterm_input_uxkb.c
nodist_libuterm_la_SOURCES =
libuterm_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
$(SYSTEMD_CFLAGS) \
$(DRM_CFLAGS) \
$(EGL_CFLAGS) \
$(GBM_CFLAGS) \
$(GLES2_CFLAGS) \
$(UDEV_CFLAGS) \
$(XKBCOMMON_CFLAGS)
libuterm_la_LIBADD = \
$(SYSTEMD_LIBS) \
$(DRM_LIBS) \
$(EGL_LIBS) \
$(GBM_LIBS) \
$(GLES2_LIBS) \
$(UDEV_LIBS) \
libuterm_la_LIBADD =
$(XKBCOMMON_LIBS) \
libeloop.la
libuterm_la_LDFLAGS = \
-version-info 1:0:0
if BUILD_ENABLE_FBDEV
libuterm_la_SOURCES += \
src/uterm_video_fbdev.c
if BUILD_ENABLE_MULTI_SEAT
libuterm_la_CPPFLAGS += $(SYSTEMD_CFLAGS)
libuterm_la_LIBADD += $(SYSTEMD_LIBS)
endif
if BUILD_ENABLE_DRM
libuterm_la_SOURCES += \
src/uterm_video_drm.c
if BUILD_ENABLE_HOTPLUG
libuterm_la_CPPFLAGS += $(UDEV_CFLAGS)
libuterm_la_LIBADD += $(UDEV_LIBS)
endif
if BUILD_ENABLE_VIDEO_FBDEV
libuterm_la_SOURCES += src/uterm_video_fbdev.c
endif
if BUILD_ENABLE_VIDEO_DUMB
libuterm_la_SOURCES += src/uterm_video_dumb.c
libuterm_la_CPPFLAGS += $(DRM_CFLAGS)
libuterm_la_LIBADD += $(DRM_LIBS)
endif
if BUILD_ENABLE_VIDEO_DRM
libuterm_la_SOURCES += \
src/uterm_video_drm.c \
src/static_gl.h \
src/static_gl_math.c \
src/static_gl_shader.c
nodist_libuterm_la_SOURCES += \
src/static_shaders.c
endif
if BUILD_ENABLE_DUMB
libuterm_la_SOURCES += \
src/uterm_video_dumb.c
libuterm_la_CPPFLAGS += \
$(DRM_CFLAGS) \
$(EGL_CFLAGS) \
$(GBM_CFLAGS) \
$(GLES2_CFLAGS)
libuterm_la_LIBADD += \
$(DRM_LIBS) \
$(EGL_LIBS) \
$(GBM_LIBS) \
$(GLES2_LIBS)
endif
#
@ -251,13 +254,9 @@ SHADERS = \
$(srcdir)/src/static_gltex.vert \
$(srcdir)/src/static_gltex.frag
EXTRA_DIST += \
$(SHADERS)
CLEANFILES += \
src/static_shaders.c
genshader_SOURCES = \
src/genshader.c
EXTRA_DIST += $(SHADERS)
CLEANFILES += src/static_shaders.c
genshader_SOURCES = src/genshader.c
src/static_shaders.c: $(SHADERS) genshader$(EXEEXT)
$(AM_V_GEN)./genshader$(EXEEXT) src/static_shaders.c $(SHADERS)
@ -267,16 +266,11 @@ src/static_shaders.c: $(SHADERS) genshader$(EXEEXT)
# This generates the unifont sources from raw hex-encoded font data.
#
UNIFONT = \
src/text_font_unifont_data.hex
UNIFONT = src/text_font_unifont_data.hex
EXTRA_DIST += \
$(UNIFONT)
CLEANFILES += \
src/text_font_unifont_data.c
genunifont_SOURCES = \
src/genunifont.c
EXTRA_DIST += $(UNIFONT)
CLEANFILES += src/text_font_unifont_data.c
genunifont_SOURCES = src/genunifont.c
src/text_font_unifont_data.c: $(UNIFONT) genunifont$(EXEEXT)
$(AM_V_GEN)./genunifont$(EXEEXT) src/text_font_unifont_data.c $(UNIFONT)
@ -304,97 +298,33 @@ libtext_font_la_SOURCES = \
src/text_font.c
nodist_libtext_font_la_SOURCES =
if BUILD_ENABLE_UNIFONT
libtext_font_la_SOURCES += \
src/text_font_unifont.c
nodist_libtext_font_la_SOURCES += \
src/text_font_unifont_data.c
endif
if BUILD_ENABLE_8X16
libtext_font_la_SOURCES += \
src/text_font_8x16.c
endif
if BUILD_ENABLE_FREETYPE2
libtext_font_la_SOURCES += \
src/text_font_freetype2.c
endif
if BUILD_ENABLE_PANGO
libtext_font_la_SOURCES += \
src/text_font_pango.c
endif
libtext_font_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
$(PANGO_CFLAGS) \
$(FREETYPE2_CFLAGS)
$(AM_CPPFLAGS)
libtext_font_la_LIBADD = \
$(PANGO_LIBS) \
$(FREETYPE2_LIBS) \
-lpthread \
libtsm.la
#
# libkmscon-core
# This static library contains all the source files used in kmscon. We build
# them as separate library to allow linking them to the test programs.
# Only "main.c" is not included here as it contains the main() function.
#
if BUILD_ENABLE_KMSCON
noinst_LTLIBRARIES += libkmscon-core.la
if BUILD_ENABLE_FONT_8X16
libtext_font_la_SOURCES += src/text_font_8x16.c
endif
libkmscon_core_la_SOURCES = \
$(SHL_DLIST) \
$(SHL_ARRAY) \
$(SHL_HASHTABLE) \
$(SHL_RING) \
$(SHL_TIMER) \
$(SHL_HOOK) \
$(SHL_MISC) \
src/conf.c src/conf.h \
src/log.c src/log.h \
src/pty.c src/pty.h \
src/text.h \
src/text.c
nodist_libkmscon_core_la_SOURCES =
if BUILD_ENABLE_BBLIT
libkmscon_core_la_SOURCES += \
src/text_bblit.c
if BUILD_ENABLE_FONT_UNIFONT
libtext_font_la_SOURCES += src/text_font_unifont.c
nodist_libtext_font_la_SOURCES += src/text_font_unifont_data.c
endif
if BUILD_ENABLE_BBULK
libkmscon_core_la_SOURCES += \
src/text_bbulk.c
if BUILD_ENABLE_FONT_FREETYPE2
libtext_font_la_SOURCES += src/text_font_freetype2.c
libtext_font_la_CPPFLAGS += $(FREETYPE2_CFLAGS)
libtext_font_la_LIBADD += $(FREETYPE2_LIBS)
endif
if BUILD_ENABLE_GLES2
libkmscon_core_la_SOURCES += \
src/text_gltex.c \
src/static_gl.h \
src/static_gl_math.c \
src/static_gl_shader.c
nodist_libkmscon_core_la_SOURCES += \
src/static_shaders.c
if BUILD_ENABLE_FONT_PANGO
libtext_font_la_SOURCES += src/text_font_pango.c
libtext_font_la_CPPFLAGS += $(PANGO_CFLAGS)
libtext_font_la_LIBADD += $(PANGO_LIBS)
endif
libkmscon_core_la_CPPFLAGS = \
$(AM_CPPFLAGS) \
$(GLES2_CFLAGS) \
$(XKBCOMMON_CFLAGS)
libkmscon_core_la_LIBADD = \
$(GLES2_LIBS) \
$(XKBCOMMON_LIBS) \
-lpthread \
libeloop.la \
libtsm.la \
libuterm.la \
libtext-font.la
#
# Binaries
# These are the sources for the main binaries and test programs. They mostly
@ -414,43 +344,72 @@ endif
kmscon_SOURCES = \
$(SHL_DLIST) \
$(SHL_MISC) \
$(SHL_ARRAY) \
$(SHL_HASHTABLE) \
$(SHL_RING) \
$(SHL_TIMER) \
$(SHL_HOOK) \
src/conf.h \
src/conf.c \
src/log.h \
src/log.c \
src/pty.h \
src/pty.c \
src/text.h \
src/text.c \
src/kmscon_terminal.h \
src/kmscon_terminal.c \
src/kmscon_dummy.h \
src/kmscon_dummy.c \
src/kmscon_compositor.h \
src/kmscon_seat.h \
src/kmscon_seat.c \
src/kmscon_conf.h \
src/kmscon_conf.c \
src/kmscon_main.c
nodist_kmscon_SOURCES =
kmscon_CPPFLAGS = \
$(AM_CPPFLAGS) \
$(WAYLAND_CFLAGS) \
$(XKBCOMMON_CFLAGS)
kmscon_LDADD = \
$(WAYLAND_LIBS) \
$(XKBCOMMON_LIBS) \
libuterm.la \
libeloop.la \
libuterm.la \
libtext-font.la \
libkmscon-core.la
-lpthread
if BUILD_ENABLE_WAYLAND
kmscon_SOURCES += \
src/kmscon_compositor.h \
src/kmscon_compositor.c
if BUILD_ENABLE_SESSION_DUMMY
kmscon_SOURCES += src/kmscon_dummy.c
endif
test_output_SOURCES = tests/test_output.c tests/test_include.h
test_output_LDADD = libkmscon-core.la
if BUILD_ENABLE_SESSION_TERMINAL
kmscon_SOURCES += src/kmscon_terminal.c
kmscon_LDADD += libtsm.la
endif
test_vt_SOURCES = tests/test_vt.c
test_vt_LDADD = libkmscon-core.la
if BUILD_ENABLE_SESSION_COMPOSITOR
kmscon_SOURCES += src/kmscon_compositor.c
kmscon_CPPFLAGS += $(WAYLAND_CFLAGS)
kmscon_LDADD += $(WAYLAND_LIBS)
endif
test_input_SOURCES = tests/test_input.c
test_input_LDADD = libkmscon-core.la
if BUILD_ENABLE_RENDERER_BBLIT
kmscon_SOURCES += src/text_bblit.c
endif
test_key_SOURCES = tests/test_key.c
if BUILD_ENABLE_RENDERER_BBULK
kmscon_SOURCES += src/text_bbulk.c
endif
if BUILD_ENABLE_RENDERER_GLTEX
kmscon_SOURCES += \
src/text_gltex.c \
src/static_gl.h \
src/static_gl_math.c \
src/static_gl_shader.c
nodist_kmscon_SOURCES += src/static_shaders.c
kmscon_CPPFLAGS += $(GLES2_CFLAGS)
kmscon_LDADD += $(GLES2_LIBS)
endif
#
# Wayland Terminal
@ -484,9 +443,27 @@ wlterm_CPPFLAGS = \
$(WAYLAND_CFLAGS) \
$(XKBCOMMON_CFLAGS)
wlterm_LDADD = \
$(WAYLAND_LIBS) \
$(XKBCOMMON_LIBS) \
libeloop.la \
libtsm.la \
libtext-font.la \
-lpthread \
$(WAYLAND_LIBS) \
$(XKBCOMMON_LIBS)
-lpthread
#
# Tests
#
test_output_SOURCES = \
tests/test_include.h \
tests/test_output.c
test_output_LDADD = \
libuterm.la
test_vt_SOURCES = tests/test_vt.c
test_vt_LDADD =
test_input_SOURCES = tests/test_input.c
test_input_LDADD =
test_key_SOURCES = tests/test_key.c

View File

@ -4,5 +4,5 @@ mkdir -p m4
autoreconf -i
if test ! "x$NOCONFIGURE" = "x1" ; then
exec ./configure --enable-debug "$@"
exec ./configure "$@"
fi

File diff suppressed because it is too large Load Diff

View File

@ -33,12 +33,12 @@
#include <stdlib.h>
#include "kmscon_seat.h"
#if BUILD_ENABLE_WAYLAND
#if BUILD_ENABLE_SESSION_COMPOSITOR
int kmscon_compositor_register(struct kmscon_session **out,
struct kmscon_seat *seat);
#else /* !BUILD_ENABLE_WAYLAND */
#else /* !BUILD_ENABLE_SESSION_COMPOSITOR */
static inline int kmscon_compositor_register(struct kmscon_session **out,
struct kmscon_seat *seat)
@ -46,6 +46,6 @@ static inline int kmscon_compositor_register(struct kmscon_session **out,
return -EOPNOTSUPP;
}
#endif /* BUILD_ENABLE_WAYLAND */
#endif /* BUILD_ENABLE_SESSION_COMPOSITOR */
#endif /* KMSCON_COMPOSITOR_H */

View File

@ -175,26 +175,7 @@ int kmscon_text_render_cb(struct tsm_screen *con, void *data);
/* modularized backends */
#ifdef BUILD_ENABLE_UNIFONT
int kmscon_font_unifont_load(void);
void kmscon_font_unifont_unload(void);
#else
static inline int kmscon_font_unifont_load(void)
{
return -EOPNOTSUPP;
}
static inline void kmscon_font_unifont_unload(void)
{
}
#endif
#ifdef BUILD_ENABLE_8X16
#ifdef BUILD_ENABLE_FONT_8X16
int kmscon_font_8x16_load(void);
void kmscon_font_8x16_unload(void);
@ -212,7 +193,25 @@ static inline void kmscon_font_8x16_unload(void)
#endif
#ifdef BUILD_ENABLE_FREETYPE2
#ifdef BUILD_ENABLE_FONT_UNIFONT
int kmscon_font_unifont_load(void);
void kmscon_font_unifont_unload(void);
#else
static inline int kmscon_font_unifont_load(void)
{
return -EOPNOTSUPP;
}
static inline void kmscon_font_unifont_unload(void)
{
}
#endif
#ifdef BUILD_ENABLE_FONT_FREETYPE2
int kmscon_font_freetype2_load(void);
void kmscon_font_freetype2_unload(void);
@ -230,7 +229,7 @@ static inline void kmscon_font_freetype2_unload(void)
#endif
#ifdef BUILD_ENABLE_PANGO
#ifdef BUILD_ENABLE_FONT_PANGO
int kmscon_font_pango_load(void);
void kmscon_font_pango_unload(void);
@ -248,7 +247,7 @@ static inline void kmscon_font_pango_unload(void)
#endif
#ifdef BUILD_ENABLE_BBLIT
#ifdef BUILD_ENABLE_RENDERER_BBLIT
int kmscon_text_bblit_load(void);
void kmscon_text_bblit_unload(void);
@ -266,7 +265,7 @@ static inline void kmscon_text_bblit_unload(void)
#endif
#ifdef BUILD_ENABLE_BBULK
#ifdef BUILD_ENABLE_RENDERER_BBULK
int kmscon_text_bbulk_load(void);
void kmscon_text_bbulk_unload(void);
@ -284,7 +283,7 @@ static inline void kmscon_text_bbulk_unload(void)
#endif
#ifdef BUILD_ENABLE_GLES2
#ifdef BUILD_ENABLE_RENDERER_GLTEX
int kmscon_text_gltex_load(void);
void kmscon_text_gltex_unload(void);
@ -304,8 +303,8 @@ static inline void kmscon_text_gltex_unload(void)
static inline void kmscon_font_load_all(void)
{
kmscon_font_unifont_load();
kmscon_font_8x16_load();
kmscon_font_unifont_load();
kmscon_font_pango_load();
kmscon_font_freetype2_load();
}
@ -314,8 +313,8 @@ static inline void kmscon_font_unload_all(void)
{
kmscon_font_freetype2_unload();
kmscon_font_pango_unload();
kmscon_font_8x16_unload();
kmscon_font_unifont_unload();
kmscon_font_8x16_unload();
}
static inline void kmscon_text_load_all(void)

View File

@ -44,7 +44,7 @@
#include "shl_dlist.h"
#include "uterm.h"
#ifdef BUILD_ENABLE_SYSTEMD
#ifdef BUILD_ENABLE_MULTI_SEAT
#include <systemd/sd-login.h>
#endif
@ -72,7 +72,7 @@ struct uterm_monitor {
uterm_monitor_cb cb;
void *data;
#ifdef BUILD_ENABLE_SYSTEMD
#ifdef BUILD_ENABLE_MULTI_SEAT
sd_login_monitor *sd_mon;
struct ev_fd *sd_mon_fd;
#endif
@ -87,7 +87,7 @@ struct uterm_monitor {
static void monitor_new_seat(struct uterm_monitor *mon, const char *name);
static void monitor_free_seat(struct uterm_monitor_seat *seat);
#ifdef BUILD_ENABLE_SYSTEMD
#ifdef BUILD_ENABLE_MULTI_SEAT
static void monitor_refresh_seats(struct uterm_monitor *mon)
{
@ -184,7 +184,7 @@ static void monitor_sd_deinit(struct uterm_monitor *mon)
sd_login_monitor_unref(mon->sd_mon);
}
#else /* !BUILD_ENABLE_SYSTEMD */
#else /* !BUILD_ENABLE_MULTI_SEAT */
static void monitor_refresh_seats(struct uterm_monitor *mon)
{
@ -205,7 +205,7 @@ static void monitor_sd_deinit(struct uterm_monitor *mon)
{
}
#endif /* BUILD_ENABLE_SYSTEMD */
#endif /* BUILD_ENABLE_MULTI_SEAT */
static void seat_new_dev(struct uterm_monitor_seat *seat,
unsigned int type,
@ -474,7 +474,7 @@ static void monitor_udev_add(struct uterm_monitor *mon,
}
if (!strcmp(subs, "drm")) {
#ifdef BUILD_ENABLE_SYSTEMD
#ifdef BUILD_ENABLE_MULTI_SEAT
if (udev_device_has_tag(dev, "seat") != 1) {
log_debug("adding non-seat'ed device %s", name);
return;
@ -488,7 +488,7 @@ static void monitor_udev_add(struct uterm_monitor *mon,
sname = udev_device_get_property_value(dev, "ID_SEAT");
type = UTERM_MONITOR_DRM;
} else if (!strcmp(subs, "graphics")) {
#ifdef BUILD_ENABLE_SYSTEMD
#ifdef BUILD_ENABLE_MULTI_SEAT
if (udev_device_has_tag(dev, "seat") != 1) {
log_debug("adding non-seat'ed device %s", name);
return;
@ -516,7 +516,7 @@ static void monitor_udev_add(struct uterm_monitor *mon,
log_debug("adding device without parent %s", name);
return;
}
#ifdef BUILD_ENABLE_SYSTEMD
#ifdef BUILD_ENABLE_MULTI_SEAT
if (udev_device_has_tag(p, "seat") != 1) {
log_debug("adding non-seat'ed device %s", name);
return;

View File

@ -86,7 +86,7 @@ struct video_ops {
/* drm */
#ifdef BUILD_ENABLE_DRM
#ifdef BUILD_ENABLE_VIDEO_DRM
#include <EGL/egl.h>
#include <EGL/eglext.h>
@ -148,7 +148,7 @@ extern const struct mode_ops drm_mode_ops;
extern const struct display_ops drm_display_ops;
extern const struct video_ops drm_video_ops;
#else /* !BUILD_ENABLE_DRM */
#else /* !BUILD_ENABLE_VIDEO_DRM */
struct drm_mode {
int unused;
@ -167,11 +167,11 @@ static const struct mode_ops drm_mode_ops;
static const struct display_ops drm_display_ops;
static const struct video_ops drm_video_ops;
#endif /* BUILD_ENABLE_DRM */
#endif /* BUILD_ENABLE_VIDEO_DRM */
/* dumb drm */
#ifdef BUILD_ENABLE_DUMB
#ifdef BUILD_ENABLE_VIDEO_DUMB
#include <xf86drm.h>
#include <xf86drmMode.h>
@ -208,7 +208,7 @@ extern const struct mode_ops dumb_mode_ops;
extern const struct display_ops dumb_display_ops;
extern const struct video_ops dumb_video_ops;
#else /* !BUILD_ENABLE_DUMB */
#else /* !BUILD_ENABLE_VIDEO_DUMB */
struct dumb_mode {
int unused;
@ -227,11 +227,11 @@ static const struct mode_ops dumb_mode_ops;
static const struct display_ops dumb_display_ops;
static const struct video_ops dumb_video_ops;
#endif /* BUILD_ENABLE_DUMB */
#endif /* BUILD_ENABLE_VIDEO_DUMB */
/* fbdev */
#ifdef BUILD_ENABLE_FBDEV
#ifdef BUILD_ENABLE_VIDEO_FBDEV
#include <linux/fb.h>
@ -278,7 +278,7 @@ extern const struct mode_ops fbdev_mode_ops;
extern const struct display_ops fbdev_display_ops;
extern const struct video_ops fbdev_video_ops;
#else /* !BUILD_ENABLE_FBDEV */
#else /* !BUILD_ENABLE_VIDEO_FBDEV */
struct fbdev_mode {
int unused;
@ -297,7 +297,7 @@ static const struct mode_ops fbdev_mode_ops;
static const struct display_ops fbdev_display_ops;
static const struct video_ops fbdev_video_ops;
#endif /* BUILD_ENABLE_FBDEV */
#endif /* BUILD_ENABLE_VIDEO_FBDEV */
/* uterm_screen */