diff --git a/configure.ac b/configure.ac index a30c51ac6..71a5d9b2d 100644 --- a/configure.ac +++ b/configure.ac @@ -759,6 +759,12 @@ case "${with_readline}" in "none") ;; "readline") + # Prefer GNU readline installed by Homebrew. + if test "${OPENTHREAD_TARGET}" = darwin && brew --prefix readline > /dev/null; then + LDFLAGS="-L$(brew --prefix readline)/lib ${LDFLAGS}" + CPPFLAGS="-I$(brew --prefix readline)/include ${CPPFLAGS}" + PKG_CONFIG_PATH="$(brew --prefix)/lib/pkgconfig:$PKG_CONFIG_PATH" + fi AC_CHECK_LIB([readline], [rl_callback_handler_install]) ;; "edit") diff --git a/src/posix/Makefile-posix b/src/posix/Makefile-posix index 6db753fd0..40bc891d3 100644 --- a/src/posix/Makefile-posix +++ b/src/posix/Makefile-posix @@ -55,7 +55,7 @@ LEGACY ?= 1 LINK_RAW ?= 0 MAC_FILTER ?= 1 MTD_NETDIAG ?= 1 -READLINE ?= edit +READLINE ?= readline REFERENCE_DEVICE ?= 1 SERVICE ?= 1 SNTP_CLIENT ?= 1 diff --git a/src/posix/console_cli.c b/src/posix/console_cli.c index 6d0082b5e..b40844f1f 100644 --- a/src/posix/console_cli.c +++ b/src/posix/console_cli.c @@ -30,6 +30,11 @@ #include "openthread/config.h" +#include +#include +#include +#include + #if HAVE_LIBEDIT || HAVE_LIBREADLINE #if HAVE_LIBEDIT #include @@ -40,11 +45,6 @@ #error "Missing readline library" #endif -#include -#include -#include -#include - #include #include "openthread-core-config.h" diff --git a/src/posix/main.c b/src/posix/main.c index 18ca721ae..00da24ae4 100644 --- a/src/posix/main.c +++ b/src/posix/main.c @@ -49,7 +49,8 @@ #include #elif OPENTHREAD_POSIX_APP_TYPE == OPENTHREAD_POSIX_APP_TYPE_CLI #include -#if HAVE_LIBEDIT || HAVE_LIBREADLINE +#if (HAVE_LIBEDIT || HAVE_LIBREADLINE) && !OPENTHREAD_ENABLE_POSIX_APP_DAEMON +#define OPENTHREAD_USE_CONSOLE 1 #include "console_cli.h" #endif #else @@ -95,7 +96,7 @@ int main(int argc, char *argv[]) #if OPENTHREAD_ENABLE_PLATFORM_NETIF otSysInitNetif(instance); #endif -#if HAVE_LIBEDIT || HAVE_LIBREADLINE +#if OPENTHREAD_USE_CONSOLE otxConsoleInit(instance); #else otCliUartInit(instance); @@ -116,7 +117,7 @@ int main(int argc, char *argv[]) mainloop.mTimeout.tv_sec = 10; mainloop.mTimeout.tv_usec = 0; -#if OPENTHREAD_POSIX_APP_TYPE == OPENTHREAD_POSIX_APP_TYPE_CLI && (HAVE_LIBEDIT || HAVE_LIBREADLINE) +#if OPENTHREAD_USE_CONSOLE otxConsoleUpdate(&mainloop); #endif @@ -125,7 +126,7 @@ int main(int argc, char *argv[]) if (otSysMainloopPoll(&mainloop) >= 0) { otSysMainloopProcess(instance, &mainloop); -#if OPENTHREAD_POSIX_APP_TYPE == OPENTHREAD_POSIX_APP_TYPE_CLI && (HAVE_LIBEDIT || HAVE_LIBREADLINE) +#if OPENTHREAD_USE_CONSOLE otxConsoleProcess(&mainloop); #endif } @@ -136,7 +137,7 @@ int main(int argc, char *argv[]) } } -#if OPENTHREAD_POSIX_APP_TYPE == OPENTHREAD_POSIX_APP_TYPE_CLI && (HAVE_LIBEDIT || HAVE_LIBREADLINE) +#if OPENTHREAD_USE_CONSOLE otxConsoleDeinit(); #endif otInstanceFinalize(instance);