add a Readline module, fix detection, keep disabled for now

This commit is contained in:
Enno Rehling 2018-02-25 16:36:22 +01:00
parent a286cb45f1
commit 51fb719bb6
5 changed files with 59 additions and 5 deletions

View File

@ -38,6 +38,8 @@ else (MSVC)
find_package (Curses)
endif (MSVC)
find_package (Readline)
if (ERESSEA_DB STREQUAL "db")
find_package (BerkeleyDB REQUIRED QUIET)
else()

View File

@ -0,0 +1,47 @@
# - Try to find readline include dirs and libraries
#
# Usage of this module as follows:
#
# find_package(Readline)
#
# Variables used by this module, they can change the default behaviour and need
# to be set before calling find_package:
#
# READLINE_ROOT_DIR Set this variable to the root installation of
# readline if the module has problems finding the
# proper installation path.
#
# Variables defined by this module:
#
# READLINE_FOUND System has readline, include and lib dirs found
# READLINE_INCLUDE_DIR The readline include directories.
# READLINE_LIBRARY The readline library.
find_path(READLINE_ROOT_DIR
NAMES include/readline/readline.h
)
find_path(READLINE_INCLUDE_DIR
NAMES readline/readline.h
HINTS ${READLINE_ROOT_DIR}/include
)
find_library(READLINE_LIBRARY
NAMES readline
HINTS ${READLINE_ROOT_DIR}/lib
)
if(READLINE_INCLUDE_DIR AND READLINE_LIBRARY AND Ncurses_LIBRARY)
set(READLINE_FOUND TRUE)
else(READLINE_INCLUDE_DIR AND READLINE_LIBRARY AND Ncurses_LIBRARY)
FIND_LIBRARY(READLINE_LIBRARY NAMES readline)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG READLINE_INCLUDE_DIR READLINE_LIBRARY )
MARK_AS_ADVANCED(READLINE_INCLUDE_DIR READLINE_LIBRARY)
endif(READLINE_INCLUDE_DIR AND READLINE_LIBRARY AND Ncurses_LIBRARY)
mark_as_advanced(
READLINE_ROOT_DIR
READLINE_INCLUDE_DIR
READLINE_LIBRARY
)

View File

@ -295,6 +295,12 @@ target_link_libraries(test_eressea ${DB_LIBRARIES})
add_definitions(-DUSE_DB)
endif(SQLITE3_FOUND)
if (READLINE_FOUND)
include_directories (${READLINE_INCLUDE_DIR})
target_link_libraries(eressea ${READLINE_LIBRARY})
add_definitions(-DUSE_READLINE)
endif (READLINE_FOUND)
if (CURSES_FOUND)
include_directories (${CURSES_INCLUDE_DIR})
target_link_libraries(eressea ${CURSES_LIBRARIES})

View File

@ -29,7 +29,7 @@
#define lua_strlen(L, idx) lua_rawlen(L, idx)
#endif
#if defined(LUA_USE_READLINE)
#ifdef LUA_USE_READLINE
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
@ -58,7 +58,7 @@ static int lua_readline(lua_State * l, char *b, const char *prompt)
}
}
void set_readline(readline foo)
void set_readline(readline_fun foo)
{
my_readline = foo;
}
@ -190,7 +190,6 @@ static int pushline(lua_State * L, int firstline)
lua_pushfstring(L, "return %s", b + 1); /* change it to `return' */
else
lua_pushstring(L, b);
lua_freeline(L, b);
return 1;
}

View File

@ -30,8 +30,8 @@ extern "C" {
extern int lua_console(struct lua_State *L);
extern int lua_do(struct lua_State *L);
typedef int (*readline) (struct lua_State *, char *, size_t, const char *);
extern void set_readline(readline foo);
typedef int (*readline_fun) (struct lua_State *, char *, size_t, const char *);
extern void set_readline(readline_fun foo);
#ifdef __cplusplus
}