Build: Support common+sense+wilzor API libs; Move xcbXorg into commonLibs
xcbXorg is a connection manager lib that'll be used in common by all of the xcb API frontends: xcbMouse, xcbWindow and xcbKeyboard. We moved it into commonLibs to make it make more sense. We also cleaned up the M4 scripting around AC_ARG_VAR-ing new common libs as well as sense/wilzor libs.
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
SUBDIRS = hcore senseApis
|
||||
SUBDIRS = hcore commonLibs
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
AM_CPPFLAGS+= -I"$(top_srcdir)/hcore/include"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
SUBDIRS = @COMMONLIBS_ENABLED@
|
||||
+9
-3
@@ -64,16 +64,22 @@ AC_SUBST([AM_CPPFLAGS])
|
||||
AC_SUBST([YACC])
|
||||
AC_SUBST([LEX])
|
||||
|
||||
m4_include([m4/sense_api_opts.m4])
|
||||
COMMONLIBS_ENABLED=
|
||||
SENSEAPIS_ENABLED=
|
||||
WILZORAPIS_ENABLED=
|
||||
m4_include([m4/commonlibs-opts.m4])
|
||||
m4_include([m4/sense-wilzor-api-opts.m4])
|
||||
AC_SUBST([COMMONLIBS_ENABLED])
|
||||
AC_SUBST([SENSEAPIS_ENABLED])
|
||||
AC_SUBST([WILZORAPIS_ENABLED])
|
||||
|
||||
AC_CONFIG_HEADERS([include/config.h])
|
||||
AC_CONFIG_FILES([
|
||||
Makefile hcore/Makefile
|
||||
hcore/deviceManager/Makefile
|
||||
hcore/senseApis/Makefile
|
||||
senseApis/Makefile
|
||||
senseApis/xcbXorg/Makefile
|
||||
commonLibs/Makefile
|
||||
commonLibs/xcbXorg/Makefile
|
||||
])
|
||||
|
||||
AC_CONFIG_COMMANDS_POST([
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
dnl _HK_LIB_ENABLE_IMPL(name, description, config_define, enable_var,
|
||||
dnl enabled_list, [commands], [unimplemented])
|
||||
dnl name - Name of the library (e.g., xcbXorg)
|
||||
dnl description - Human readable description
|
||||
dnl config_define - Configuration define name (e.g., CONFIG_XCBXORG_ENABLED)
|
||||
dnl enable_var - Shell variable to track enabled status
|
||||
dnl enabled_list - List variable to append name to (e.g., SENSEAPIS_ENABLED)
|
||||
dnl commands - Optional: Shell commands to execute when enabling
|
||||
dnl unimplemented - Optional: If "unimplemented", error out
|
||||
AC_DEFUN([_HK_LIB_ENABLE_IMPL], [
|
||||
AS_IF([test "x[]m4_normalize($7)" = "xunimplemented"], [
|
||||
AC_MSG_ERROR([$1 is not yet implemented])
|
||||
])
|
||||
AS_IF([test "x${$4_done}" != "xyes"], [
|
||||
$4_done=yes
|
||||
AC_DEFINE([$3], [1], [Enable $2])
|
||||
$5="${$5} $1"
|
||||
$6
|
||||
])
|
||||
])
|
||||
|
||||
dnl _HK_LIB_ARG_ENABLE(dev_api_type, name, description, config_define,
|
||||
dnl enabled_list, [commands], [unimplemented])
|
||||
dnl lib/api_type - Type of API ("senseapi", "wilzorapi", or "lib")
|
||||
dnl name - Name of the library (e.g., xcbXorg)
|
||||
dnl description - Human readable description
|
||||
dnl config_define - Configuration define name (e.g., CONFIG_XCBXORG_ENABLED)
|
||||
dnl enabled_list - List variable to append name to
|
||||
dnl commands - Optional: Shell commands to execute when enabling
|
||||
dnl unimplemented - Optional: If "unimplemented", error out
|
||||
AC_DEFUN([_HK_LIB_ARG_ENABLE], [
|
||||
AC_ARG_ENABLE([$1-$2],
|
||||
[AS_HELP_STRING([--enable-$1-$2], [Enable $3])],
|
||||
[AS_IF([test "x$enable_$1_$2" != "xno"], [
|
||||
_HK_LIB_ENABLE_IMPL([$2], [$3], [$4], [enable_$1_$2], [$5], [$6], [$7])
|
||||
])],
|
||||
[enable_$1_$2=no]
|
||||
)
|
||||
])
|
||||
|
||||
# Macro for enabling the XCB/Xorg Connection Mgr lib. Invoked by several other
|
||||
# libs.
|
||||
AC_DEFUN([_HK_LIB_XCBXORG_ENABLE], [
|
||||
_HK_LIB_ENABLE_IMPL([xcbXorg], [XCB/Xorg Connection Manager backend],
|
||||
[CONFIG_LIB_XCBXORG_ENABLED], [enable_lib_xcbXorg], [COMMONLIBS_ENABLED], [
|
||||
PKG_CHECK_MODULES([XCB], [xcb], [], [
|
||||
AC_MSG_ERROR(m4_normalize([XCB library not found. Sense API
|
||||
XCB/Xorg requires the XCB dev headers and shlib.]))
|
||||
])
|
||||
AC_SUBST([XCB_CFLAGS])
|
||||
AC_SUBST([XCB_LIBS])
|
||||
]
|
||||
)
|
||||
])
|
||||
|
||||
AC_DEFUN([_HK_LIB_ALSA_ENABLE], [
|
||||
_HK_LIB_ENABLE_IMPL([alsa], [ALSA Connection Manager backend],
|
||||
[CONFIG_LIB_ALSA_ENABLED], [enable_lib_alsa], [COMMONLIBS_ENABLED], [
|
||||
PKG_CHECK_MODULES([ALSA], [alsa], [], [
|
||||
AC_MSG_ERROR(m4_normalize([ALSA library not found. Sense API
|
||||
ALSA requires the ALSA dev headers and shlib.]))
|
||||
])
|
||||
AC_SUBST([ALSA_CFLAGS])
|
||||
AC_SUBST([ALSA_LIBS])
|
||||
]
|
||||
)
|
||||
])
|
||||
|
||||
# Temporary until we implement the xcbWindow SenseAPI.
|
||||
_HK_LIB_XCBXORG_ENABLE
|
||||
@@ -0,0 +1,65 @@
|
||||
|
||||
dnl Wrapper macros for specific API types
|
||||
AC_DEFUN([HK_SENSEAPI_ARG_ENABLE], [
|
||||
_HK_LIB_ARG_ENABLE([senseapi], [$1], [$2], [$3],
|
||||
[SENSEAPIS_ENABLED], [$4], [$5])
|
||||
])
|
||||
|
||||
AC_DEFUN([HK_WILZORAPI_ARG_ENABLE], [
|
||||
_HK_LIB_ARG_ENABLE([wilzorapi], [$1], [$2], [$3],
|
||||
[WILZORLIBS_ENABLED], [$4], [$5])
|
||||
])
|
||||
|
||||
HK_SENSEAPI_ARG_ENABLE([xcbWindow],
|
||||
m4_normalize([XCB/Xorg Window Attaching SenseAPI backend: enables Harikoff
|
||||
to see attached window contents. Useful for web learning]),
|
||||
[CONFIG_XCBWINDOW_ENABLED],
|
||||
[_HK_LIB_XCBXORG_ENABLE],
|
||||
[unimplemented]
|
||||
)
|
||||
|
||||
HK_SENSEAPI_ARG_ENABLE([v4l],
|
||||
m4_normalize([Video4Linux camera SenseAPI backend: enables Harikoff to
|
||||
see via a V4L camera]),
|
||||
[CONFIG_V4L_ENABLED], [
|
||||
PKG_CHECK_MODULES([V4L], [libv4l], [], [
|
||||
AC_MSG_ERROR(m4_normalize([libv4l not found. Sense API V4L
|
||||
requires the libv4l dev headers and shlib.]))
|
||||
])
|
||||
AC_SUBST([V4L_CFLAGS])
|
||||
AC_SUBST([V4L_LIBS])
|
||||
],
|
||||
[unimplemented]
|
||||
)
|
||||
|
||||
HK_SENSEAPI_ARG_ENABLE([alsaMic],
|
||||
m4_normalize([ALSA Microphone SenseAPI backend: enables Harikoff to
|
||||
hear via an ALSA microphone]),
|
||||
[CONFIG_ALSAMIC_ENABLED],
|
||||
[_HK_LIB_ALSA_ENABLE],
|
||||
[unimplemented]
|
||||
)
|
||||
|
||||
HK_WILZORAPI_ARG_ENABLE([xcbMouse],
|
||||
m4_normalize([XCB/Xorg Mouse Wilzor API backend: enables Harikoff to
|
||||
control a virtual mouse cursor via XCB/Xorg]),
|
||||
[CONFIG_XCBMOUSE_ENABLED],
|
||||
[_HK_LIB_XCBXORG_ENABLE],
|
||||
[unimplemented]
|
||||
)
|
||||
|
||||
HK_WILZORAPI_ARG_ENABLE([xcbKeyboard],
|
||||
m4_normalize([XCB/Xorg Keyboard Wilzor API backend: enables Harikoff to
|
||||
control a virtual keyboard via XCB/Xorg]),
|
||||
[CONFIG_XCBKEYBOARD_ENABLED],
|
||||
[_HK_LIB_XCBXORG_ENABLE],
|
||||
[unimplemented]
|
||||
)
|
||||
|
||||
HK_WILZORAPI_ARG_ENABLE([alsaVoice],
|
||||
m4_normalize([ALSA Voice Wilzor API backend: enables Harikoff to
|
||||
vocalize via an ALSA voice synthesizer]),
|
||||
[CONFIG_ALSAVOICE_ENABLED],
|
||||
[_HK_LIB_ALSA_ENABLE],
|
||||
[unimplemented]
|
||||
)
|
||||
@@ -1,22 +0,0 @@
|
||||
SENSEAPIS_ENABLED=
|
||||
|
||||
AC_ARG_ENABLE([senseapi-xcbxorg],
|
||||
[AS_HELP_STRING([--enable-senseapi-xcbxorg],
|
||||
[Enable XCB/Xorg SenseAPI backend])],
|
||||
[AS_CASE([$enableval],
|
||||
[no], [enable_senseapi_xcbxorg=no],
|
||||
[yes|""|*], [
|
||||
enable_senseapi_xcbxorg=yes
|
||||
AC_DEFINE([XCBXORG_ENABLED], [1],
|
||||
[Define to 1 if you have XCB/Xorg SenseAPI backend])
|
||||
SENSEAPIS_ENABLED="${SENSEAPIS_ENABLED} xcbXorg"
|
||||
PKG_CHECK_MODULES([XCB], [xcb], [], [
|
||||
AC_MSG_ERROR(m4_normalize([XCB library not found. Sense API
|
||||
XCB/Xorg requires the XCB dev headers and shlib.]))
|
||||
])
|
||||
AC_SUBST([XCB_CFLAGS])
|
||||
AC_SUBST([XCB_LIBS])
|
||||
]
|
||||
)],
|
||||
[enable_senseapi_xcbxorg=no]
|
||||
)
|
||||
@@ -1 +0,0 @@
|
||||
SUBDIRS = @SENSEAPIS_ENABLED@
|
||||
Reference in New Issue
Block a user