From e178331488a0fb6a9c48152511a21a3f95d66750 Mon Sep 17 00:00:00 2001 From: Tom Scogland Date: Thu, 10 Oct 2024 11:14:23 -0700 Subject: [PATCH] build(lpeg): search for lpeg.so on MacOS Problem: Currently Neovim only searches for lpeg.dylib, liblpeg.dylib, etc. on MacOS, but a normal installation of lpeg will produce lpeg.so instead. There are explicit workarounds for this by modifying lpeg's package in Homebrew, and will shortly be another in spack. Solution: also search for lpeg.so even if that's not the platform default, because Lua and luarocks use it anyway. --- cmake/FindLpeg.cmake | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cmake/FindLpeg.cmake b/cmake/FindLpeg.cmake index 3d0ff5929d..7657bdac9e 100644 --- a/cmake/FindLpeg.cmake +++ b/cmake/FindLpeg.cmake @@ -1,4 +1,13 @@ -find_library2(LPEG_LIBRARY NAMES lpeg_a lpeg liblpeg_a lpeg${CMAKE_SHARED_LIBRARY_SUFFIX} PATH_SUFFIXES lua/5.1) +find_library2(LPEG_LIBRARY NAMES lpeg_a lpeg liblpeg_a lpeg.so lpeg${CMAKE_SHARED_LIBRARY_SUFFIX} PATH_SUFFIXES lua/5.1) +if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND LPEG_LIBRARY MATCHES ".so$") + execute_process( + COMMAND otool -hv "${LPEG_LIBRARY}" + OUTPUT_VARIABLE LPEG_HEADER + ) + if(LPEG_HEADER MATCHES ".* BUNDLE .*") + message(FATAL_ERROR "lpeg library found at ${LPEG_LIBRARY} but built as a bundle rather than a dylib, please rebuild with `-dynamiclib` rather than `-bundle`") + endif() +endif() find_package_handle_standard_args(Lpeg DEFAULT_MSG LPEG_LIBRARY) mark_as_advanced(LPEG_LIBRARY)