Fixes for build system
authorMyhailo Danylenko <isbear@ukrpost.net>
Mon, 23 Feb 2009 18:27:13 +0200
changeset 3 a5f864d4207f
parent 2 a88a395e6868
child 4 bca17e4a9851
Fixes for build system
CMakeLists.txt
README
config.h.in
main.c
--- a/CMakeLists.txt	Mon Feb 23 17:05:43 2009 +0200
+++ b/CMakeLists.txt	Mon Feb 23 18:27:13 2009 +0200
@@ -4,14 +4,15 @@
 
 ## User options
 option(DEBUG "Enable debugging output" ON)
+option(LLM_LOG_HANDLER "Enable registration of log messages handler for lua-loudmouth library's messages" ON)
 set(MCABBER_INCLUDE_DIR "/home/isbear/src/mcabber/hglm/mcabber/src" CACHE FILEPATH "Path to mcabber headers")
+set(LUA_HOOK_NAME "hook_handler" CACHE STRING "Lua function name to be called on hook invocation")
 
 ## Define targets
 add_library(mcabber-lua MODULE main.c util.c)
 get_target_property(mcabber-lua_SOURCES mcabber-lua SOURCES)
 
 ## Packaging information
-#set(CPACK_PACKAGE_NAME mcabber-lua)
 set(CPACK_PACKAGE_VERSION_MAJOR 0)
 set(CPACK_PACKAGE_VERSION_MINOR 0)
 set(CPACK_PACKAGE_VERSION_PATCH 0)
@@ -33,16 +34,15 @@
 
 ## Gather information about system
 find_package(Lua51 REQUIRED)
-#execute_process(COMMAND lua -e "print ( package.path )" OUTPUT_VARIABLE LUA_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
-#execute_process(COMMAND lua -e "print ( package.cpath )" OUTPUT_VARIABLE LUA_CPATH OUTPUT_STRIP_TRAILING_WHITESPACE)
 find_package(PkgConfig REQUIRED)
 pkg_check_modules(GLIB REQUIRED glib-2.0)
 pkg_check_modules(GMODULE REQUIRED gmodule-2.0)
+# XXX: we need only headers
 pkg_check_modules(LM REQUIRED loudmouth-1.0)
 find_package(Perl)
 
 ## Set up compiler
-configure_file(config.h.in config.h)
+configure_file(config.h.in config.h ESCAPE_QUOTES)
 include_directories(SYSTEM ${LUA_INCLUDE_DIR} ${GLIB_INCLUDE_DIRS} ${GMODULE_INCLUDE_DIRS} ${LM_INCLUDE_DIRS})
 target_link_libraries(mcabber-lua ${LUA_LIBRARIES} ${GLIB_LIBRARIES} ${GMODULE_LIBRARIES})
 include_directories(${mcabber-lua_SOURCE_DIR} ${mcabber-lua_BINARY_DIR} ${MCABBER_INCLUDE_DIR})
@@ -52,13 +52,9 @@
 	add_custom_command(OUTPUT ${mcabber-lua_BINARY_DIR}/mcabber-lua.html COMMAND ${PERL_EXECUTABLE} ${mcabber-lua_SOURCE_DIR}/docgen.pl ${mcabber-lua_SOURCES} > ${mcabber-lua_BINARY_DIR}/mcabber-lua.html DEPENDS ${mcabber-lua_SOURCE_DIR}/docgen.pl ${mcabber-lua_SOURCES} WORKING_DIRECTORY ${mcabber-lua_SOURCE_DIR})
 	add_custom_target(doc ALL DEPENDS ${mcabber-lua_BINARY_DIR}/mcabber-lua.html)
 endif()
-#add_custom_target(test COMMAND env "LUA_PATH=${lua-lm_SOURCE_DIR}/?.lua;${LUA_PATH}" "LUA_CPATH=${lua-lm_SOURCE_DIR}/?.so;${lua-lm_BINARY_DIR}/?.so;${LUA_CPATH}" lua ${lua-lm_SOURCE_DIR}/test.lua DEPENDS loudmouth VERBATIM)
-#add_custom_target(test1 COMMAND env "LUA_PATH=${lua-lm_SOURCE_DIR}/?.lua;${LUA_PATH}" "LUA_CPATH=${lua-lm_SOURCE_DIR}/?.so;${lua-lm_BINARY_DIR}/?.so;${LUA_CPATH}" lua ${lua-lm_BINARY_DIR}/test.lua DEPENDS loudmouth VERBATIM)
 
 ## Set up installer
 install(TARGETS mcabber-lua DESTINATION lib/mcabber)
-#install(FILES lm.lua DESTINATION share/lua/5.1)
-#install(FILES test.lua DESTINATION share/doc/${CPACK_PACKAGE_NAME}/examples)
 if(PERL_FOUND)
 	install(FILES ${mcabber-lua_BINARY_DIR}/mcabber-lua.html DESTINATION share/doc/${CPACK_PACKAGE_NAME})
 endif()
--- a/README	Mon Feb 23 17:05:43 2009 +0200
+++ b/README	Mon Feb 23 18:27:13 2009 +0200
@@ -1,21 +1,26 @@
 
 This is a lua 5.1 module for mcabber.
 
-To install it, you need lua and glib headers and libraries and
-cmake. Then do
+To install it, you will need:
+- lua library and headers
+- glib (with gmodule) library and headers
+- loudmouth headers
+- mcabber-lm sources (for headers)
+- cmake
+- perl (optional)
+
+Then do
+$ mkdir build
 $ cd build
 $ cmake ..
+$ make edit_cache
 $ make
 # make install
 
 Debian users can instead of make install do
-$ make package
+$ fakeroot make package
 # dpkg -i mcabber-lua-*.deb
 
-Also you can be interested in running
-$ make edit_cache
-before doing make to configure some project settings.
-
 This code underlies terms of GNU GPL v2 or later.
 
 I will be happy to get feedback, patches, suggestions, etc.
--- a/config.h.in	Mon Feb 23 17:05:43 2009 +0200
+++ b/config.h.in	Mon Feb 23 18:27:13 2009 +0200
@@ -1,24 +1,30 @@
 
-#ifndef LLM_CONFIG_H
-#define LLM_CONFIG_H
+#ifndef MLUA_CONFIG_H
+#define MLUA_CONFIG_H
 
 // define this to enable debugging output
 #cmakedefine DEBUG
 
+// define this to enable lua-loudmouth log messages handler
+#cmakedefine LLM_LOG_HANDLER
+
+// define this to a lua function name that will handle hooks
+#define LUA_HOOK_NAME ( "${LUA_HOOK_NAME}" )
+
 // hack for mcabber headers
 #define MODULES_ENABLE
 
 #ifdef DEBUG
 #  include <stdio.h>
 
-#  ifndef LLM_LOG_PREFIX
-#    define LLM_LOG_PREFIX ( NULL )
+#  ifndef MLUA_LOG_PREFIX
+#    define MLUA_LOG_PREFIX ( NULL )
 #  endif
 
-#  define D(FORMAT...) { g_log (LLM_LOG_PREFIX, G_LOG_LEVEL_DEBUG, FORMAT); }
-#  define I(FORMAT...) { g_log (LLM_LOG_PREFIX, G_LOG_LEVEL_INFO, FORMAT); }
-#  define W(FORMAT...) { g_log (LLM_LOG_PREFIX, G_LOG_LEVEL_WARNING, FORMAT); }
-#  define E(FORMAT...) { g_log (LLM_LOG_PREFIX, G_LOG_LEVEL_ERROR, FORMAT); }
+#  define D(FORMAT...) { g_log (MLUA_LOG_PREFIX, G_LOG_LEVEL_DEBUG, FORMAT); }
+#  define I(FORMAT...) { g_log (MLUA_LOG_PREFIX, G_LOG_LEVEL_INFO, FORMAT); }
+#  define W(FORMAT...) { g_log (MLUA_LOG_PREFIX, G_LOG_LEVEL_WARNING, FORMAT); }
+#  define E(FORMAT...) { g_log (MLUA_LOG_PREFIX, G_LOG_LEVEL_ERROR, FORMAT); }
 #else
 #  define D(FORMAT...) { /* FORMAT */ }
 #  define I(FORMAT...) { /* FORMAT */ }
--- a/main.c	Mon Feb 23 17:05:43 2009 +0200
+++ b/main.c	Mon Feb 23 18:27:13 2009 +0200
@@ -8,6 +8,7 @@
 #include <stdlib.h>    // getenv
 #include <string.h>    // strcmp
 
+#include "config.h"
 #include "util.h"
 #include "logprint.h"  // scr_LogPrint
 #include "screen.h"    // scr_Beep, scr_WriteIncomingMessage
@@ -522,7 +523,19 @@
 
 // MAIN INITIALIZATION CODE
 
+#ifdef LLM_LOG_HANDLER
+// FIXME: this should not be here
+guint lua_lm_log_handler_id;
+
+void lua_lm_log_handler (const gchar *domain, GLogLevelFlags log_level, const gchar *message, gpointer ignore)
+{
+	scr_LogPrint (LPRINT_LOGNORM, "%s: %s", domain, message);
+}
+#endif
+
+#ifndef LUA_HOOK_NAME
 #define LUA_HOOK_NAME ( "hook_handler" )
+#endif
 
 static void lua_hook (hk_arg_t *args, lua_State *L)
 {
@@ -590,6 +603,11 @@
 	lua_pop (lua, 1); // XXX
 	lua_register (lua, "dopath", lua_global_dopath);
 	lua_register (lua, "print",  lua_global_print );
+
+#ifdef LLM_LOG_HANDLER
+	// FIXME: this should not be here.
+	lua_lm_log_handler_id = g_log_set_handler ("lua-lm", G_LOG_LEVEL_MASK, (GLogFunc) lua_lm_log_handler, NULL);
+#endif
 	
 	initfile = mcabber_config_filename ("mcabberrc.lua");
 	if (!initfile)
@@ -657,6 +675,11 @@
 
 		lua_close (lua);
 		lua = NULL;
+
+#ifdef LLM_LOG_HANDLER
+		// FIXME: shouldn't be here
+		g_log_remove_handler ("lua-lm", lua_lm_log_handler_id);
+#endif
 	}
 }