pcre2test: really allow libedit with cmake
Using cmake to configure and enable linking pcre2test with libedit, could result in a broken build, because the header used was instead pointing to readline. In cases were the build will succeed (because both libraries were available), it would likely show warnings, because several history functions were being used without declarations, since readline requires including "history.h" for those. Additionally, since PCRE2_SUPPORT_READLINE is ON by default (unlike configure), turning PCRE2_SUPPORT_LIBEDIT=ON, would require setting that other option to OFF explicitly (even if readline wasn't available) or the setup would abort. Lastly, in systems with no default sysroot (ex: macOS), the use of absolute paths for searching for libedit's readline.h could fail so use instead relative PATH_SUFFIXES.
This commit is contained in:
parent
a1093f660d
commit
28c42594c3
|
@ -306,9 +306,15 @@ ENDIF(PCRE2_SUPPORT_LIBZ)
|
||||||
IF(EDITLINE_FOUND)
|
IF(EDITLINE_FOUND)
|
||||||
OPTION (PCRE2_SUPPORT_LIBEDIT "Enable support for linking pcre2test with libedit." OFF)
|
OPTION (PCRE2_SUPPORT_LIBEDIT "Enable support for linking pcre2test with libedit." OFF)
|
||||||
ENDIF(EDITLINE_FOUND)
|
ENDIF(EDITLINE_FOUND)
|
||||||
|
IF(EDITLINE_FOUND)
|
||||||
IF(PCRE2_SUPPORT_LIBEDIT)
|
IF(PCRE2_SUPPORT_LIBEDIT)
|
||||||
INCLUDE_DIRECTORIES(${EDITLINE_INCLUDE_DIR})
|
INCLUDE_DIRECTORIES(${EDITLINE_INCLUDE_DIR})
|
||||||
ENDIF(PCRE2_SUPPORT_LIBEDIT)
|
ENDIF(PCRE2_SUPPORT_LIBEDIT)
|
||||||
|
ELSE(EDITLINE_FOUND)
|
||||||
|
IF(PCRE2_SUPPORT_LIBEDIT)
|
||||||
|
MESSAGE(FATAL_ERROR "libedit not found, set Editline_ROOT if needed")
|
||||||
|
ENDIF(PCRE2_SUPPORT_LIBEDIT)
|
||||||
|
ENDIF(EDITLINE_FOUND)
|
||||||
|
|
||||||
# readline lib
|
# readline lib
|
||||||
IF(READLINE_FOUND)
|
IF(READLINE_FOUND)
|
||||||
|
@ -346,7 +352,12 @@ IF(PCRE2_BUILD_PCRE2GREP AND NOT PCRE2_BUILD_PCRE2_8)
|
||||||
ENDIF(PCRE2_BUILD_PCRE2GREP AND NOT PCRE2_BUILD_PCRE2_8)
|
ENDIF(PCRE2_BUILD_PCRE2GREP AND NOT PCRE2_BUILD_PCRE2_8)
|
||||||
|
|
||||||
IF(PCRE2_SUPPORT_LIBREADLINE AND PCRE2_SUPPORT_LIBEDIT)
|
IF(PCRE2_SUPPORT_LIBREADLINE AND PCRE2_SUPPORT_LIBEDIT)
|
||||||
MESSAGE(FATAL_ERROR "Only one of libreadline or libeditline can be specified")
|
IF(READLINE_FOUND)
|
||||||
|
MESSAGE(FATAL_ERROR
|
||||||
|
" Only one of the readline compatible libraries can be enabled.\n"
|
||||||
|
" Disable libreadline with -DPCRE2_SUPPORT_LIBREADLINE=OFF"
|
||||||
|
)
|
||||||
|
ENDIF(READLINE_FOUND)
|
||||||
ENDIF(PCRE2_SUPPORT_LIBREADLINE AND PCRE2_SUPPORT_LIBEDIT)
|
ENDIF(PCRE2_SUPPORT_LIBREADLINE AND PCRE2_SUPPORT_LIBEDIT)
|
||||||
|
|
||||||
IF(PCRE2_SUPPORT_BSR_ANYCRLF)
|
IF(PCRE2_SUPPORT_BSR_ANYCRLF)
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
if(EDITLINE_INCLUDE_DIR AND EDITLINE_LIBRARY AND NCURSES_LIBRARY)
|
if(EDITLINE_INCLUDE_DIR AND EDITLINE_LIBRARY AND NCURSES_LIBRARY)
|
||||||
set(EDITLINE_FOUND TRUE)
|
set(EDITLINE_FOUND TRUE)
|
||||||
else(EDITLINE_INCLUDE_DIR AND EDITLINE_LIBRARY AND NCURSES_LIBRARY)
|
else(EDITLINE_INCLUDE_DIR AND EDITLINE_LIBRARY AND NCURSES_LIBRARY)
|
||||||
FIND_PATH(EDITLINE_INCLUDE_DIR readline.h
|
FIND_PATH(EDITLINE_INCLUDE_DIR readline.h PATH_SUFFIXES
|
||||||
/usr/include/editline
|
editline
|
||||||
/usr/include/edit/readline
|
edit/readline
|
||||||
/usr/include/readline
|
readline
|
||||||
)
|
)
|
||||||
|
|
||||||
FIND_LIBRARY(EDITLINE_LIBRARY NAMES edit)
|
FIND_LIBRARY(EDITLINE_LIBRARY NAMES edit)
|
||||||
|
|
|
@ -97,7 +97,7 @@ that first, falling back to readline/readline.h. */
|
||||||
#elif defined(HAVE_EDIT_READLINE_READLINE_H)
|
#elif defined(HAVE_EDIT_READLINE_READLINE_H)
|
||||||
#include <edit/readline/readline.h>
|
#include <edit/readline/readline.h>
|
||||||
#else
|
#else
|
||||||
#include <readline/readline.h>
|
#include <readline.h>
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue