diff --git a/CMakeLists.txt b/CMakeLists.txt index b637f84..42e5890 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,8 @@ # Please note that the package source code is licensed under its own # license. +CMAKE_MINIMUM_REQUIRED (VERSION 3.10) PROJECT(lua-ev C) -CMAKE_MINIMUM_REQUIRED (VERSION 2.6) # Basic configurations SET(INSTALL_CMOD share/lua/cmod CACHE PATH "Directory to install Lua binary modules (configure lua via LUA_CPATH)") @@ -16,6 +16,11 @@ CMAKE_MINIMUM_REQUIRED (VERSION 2.6) list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/") +# Find lua using PkgConfig +find_package(PkgConfig REQUIRED) +pkg_check_modules(LUA REQUIRED lua) +# / Find lua using PkgConfig + # Find libev FIND_LIBRARY (LIBEV_LIBRARY NAMES ev) FIND_PATH (LIBEV_INCLUDE_DIR ev.h @@ -25,17 +30,15 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/") FIND_PACKAGE_HANDLE_STANDARD_ARGS(libev DEFAULT_MSG LIBEV_LIBRARY LIBEV_INCLUDE_DIR) # / Find libarchive -# Find lua - FIND_PACKAGE(Lua5X REQUIRED) # / Find lua # Define how to build ev.so: - INCLUDE_DIRECTORIES(${LIBEV_INCLUDE_DIR} ${LUA_INCLUDE_DIR}) ADD_LIBRARY(cmod_ev MODULE lua_ev.c ) SET_TARGET_PROPERTIES(cmod_ev PROPERTIES PREFIX "") SET_TARGET_PROPERTIES(cmod_ev PROPERTIES OUTPUT_NAME ev) + TARGET_INCLUDE_DIRECTORIES(cmod_ev PRIVATE ${LIBEV_INCLUDE_DIR} ${LUA_INCLUDE_DIRS}) TARGET_LINK_LIBRARIES(cmod_ev ${LUA_LIBRARIES} ${LIBEV_LIBRARY}) # / build ev.so diff --git a/cmake/Modules/FindLua5X.cmake b/cmake/Modules/FindLua5X.cmake deleted file mode 100644 index 9e0eddf..0000000 --- a/cmake/Modules/FindLua5X.cmake +++ /dev/null @@ -1,46 +0,0 @@ - -find_path(LUA_INCLUDE_DIR lua.h - HINTS - $ENV{LUA_DIR} - PATH_SUFFIXES include include/lua include/lua53 include/lua5.3 include/lua52 include/lua5.2 include/lua51 include/lua5.1 - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /sw - /opt/local - /opt/csw - /opt -) - -find_library(LUA_LIBRARY - NAMES lua lua53 lua5.3 lua52 lua5.2 lua-5.2 lua51 lua5.1 luajit-5.1 luajit51 luajit5.1 - HINTS - $ENV{LUA_DIR} - PATH_SUFFIXES lib64 lib - PATHS - ~/Library/Frameworks - /Library/Frameworks - /usr/local - /usr - /sw - /opt/local - /opt/csw - /opt -) - -if(LUA_LIBRARY) - if(UNIX AND NOT APPLE) - find_library(LUA_MATH_LIBRARY m) - set( LUA_LIBRARIES "${LUA_LIBRARY};${LUA_MATH_LIBRARY}" CACHE STRING "Lua Libraries") - else(UNIX AND NOT APPLE) - set( LUA_LIBRARIES "${LUA_LIBRARY}" CACHE STRING "Lua Libraries") - endif(UNIX AND NOT APPLE) -endif(LUA_LIBRARY) - -include(FindPackageHandleStandardArgs) - -find_package_handle_standard_args(Lua5X DEFAULT_MSG LUA_LIBRARIES LUA_INCLUDE_DIR) - -mark_as_advanced(LUA_INCLUDE_DIR LUA_LIBRARIES LUA_LIBRARY LUA_MATH_LIBRARY) diff --git a/lua_ev.c b/lua_ev.c index 15be83d..95777d7 100644 --- a/lua_ev.c +++ b/lua_ev.c @@ -131,7 +131,7 @@ LUALIB_API int luaopen_ev(lua_State *L) { * * [+2, -0, -] */ -static int version(lua_State *L) { +int version(lua_State *L) { lua_pushnumber(L, ev_version_major()); lua_pushnumber(L, ev_version_minor()); return 2; @@ -141,7 +141,7 @@ static int version(lua_State *L) { * Taken from lua.c out of the lua source distribution. Use this * function when doing lua_pcall(). */ -static int traceback(lua_State *L) { +int traceback(lua_State *L) { if ( !lua_isstring(L, 1) ) return 1; lua_getglobal(L, "debug"); diff --git a/lua_ev.h b/lua_ev.h index 12f422e..0c18ea2 100644 --- a/lua_ev.h +++ b/lua_ev.h @@ -100,8 +100,8 @@ /** * Generic functions: */ -static int version(lua_State *L); -static int traceback(lua_State *L); +int version(lua_State *L); +int traceback(lua_State *L); /** * Loop functions: @@ -131,9 +131,9 @@ static void create_obj_registry(lua_State *L); static int obj_count(lua_State *L); static void* obj_new(lua_State* L, size_t size, const char* tname); static int obj_newindex(lua_State *L); -static int obj_index(lua_State *L); +int obj_index(lua_State *L); -static int push_objs(lua_State* L, void** objs); +int push_objs(lua_State* L, void** objs); /** * Watcher functions: diff --git a/obj_lua_ev.c b/obj_lua_ev.c index 78ebd33..8801f1e 100644 --- a/obj_lua_ev.c +++ b/obj_lua_ev.c @@ -96,7 +96,7 @@ static int obj_newindex(lua_State *L) { * * [-0, +1, ?] */ -static int obj_index(lua_State *L) { +int obj_index(lua_State *L) { if ( lua_getmetatable(L, 1) ) { lua_pushvalue(L, 2); lua_gettable(L, -2); @@ -139,7 +139,7 @@ static void register_obj(lua_State*L, int obj_i, void* obj) { * * [-0, +objs_len, m] */ -static int push_objs(lua_State* L, void** objs) { +int push_objs(lua_State* L, void** objs) { int obj_count = 0; int registry_i; void** cur; diff --git a/watcher_lua_ev.c b/watcher_lua_ev.c index 67629e8..0c8d4ec 100644 --- a/watcher_lua_ev.c +++ b/watcher_lua_ev.c @@ -132,14 +132,9 @@ static void* watcher_new(lua_State* L, size_t size, const char* lua_type) { static void watcher_cb(struct ev_loop *loop, void *watcher, int revents) { lua_State* L = ev_userdata(loop); void* objs[3] = { loop, watcher, NULL }; - int result; - - lua_pushcfunction(L, traceback); - - result = lua_checkstack(L, 5); - assert(result != 0 /* able to allocate enough space on lua stack */); - result = push_objs(L, objs); - assert(result == 2 /* pushed two objects on the lua stack */); + (void)objs; + assert(lua_checkstack(L, 5) != 0 /* able to allocate enough space on lua stack */); + assert(push_objs(L, objs) == 2 /* pushed two objects on the lua stack */); assert(!lua_isnil(L, -2) /* the loop obj was resolved */); assert(!lua_isnil(L, -1) /* the watcher obj was resolved */);