[avv] Dynamic commands dependencies default tip
authorMyhailo Danylenko <isbear@ukrpost.net>
Thu, 13 Nov 2014 20:18:21 +0200
changeset 28 32bebcf6bbbd
parent 27 6de25ac5876c
[avv] Dynamic commands dependencies
CMakeLists.txt
config.h.in
env.avv.in
env.c
--- a/CMakeLists.txt	Thu Nov 13 20:17:46 2014 +0200
+++ b/CMakeLists.txt	Thu Nov 13 20:18:21 2014 +0200
@@ -24,6 +24,11 @@
 find_package(PkgConfig REQUIRED) 
 pkg_check_modules(GLIB REQUIRED glib-2.0) 
 pkg_check_modules(MCABBER REQUIRED mcabber)
+include(CheckSymbolExists)
+set(CMAKE_REQUIRED_INCLUDES ${MCABBER_INCLUDE_DIRS})
+set(CMAKE_REQUIRED_LIBRARIES ${MCABBER_LIBRARIES})
+set(CMAKE_REQUIRED_FLAGS ${MCABBER_LDFLAGS} ${MCABBER_CFLAGS})
+check_symbol_exists(MCABBER_API_HAVE_CMD_ID mcabber/api.h HAVE_MCABBER_CMD_ID)
 link_directories(${GLIB_LIBRARY_DIRS}
 				 ${MCABBER_LIBRARY_DIRS})
 
@@ -60,6 +65,11 @@
 set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*;\\\\.swp;~$;/build/;\\\\.tar\\\\.;\\\\.deb;\\\\.so")
 include(CPack)
 
+if(HAVE_MCABBER_CMD_ID)
+    set(AVV_COMMANDS_VERSION "commands:5 | commands:4 | commands:3")
+else()
+    set(AVV_COMMANDS_VERSION "commands:2 | commands:1")
+endif()
 configure_file(env.avv.in env.avv)
 
 ## Installation
@@ -68,4 +78,4 @@
 install(DIRECTORY help DESTINATION share/mcabber)
 install(FILES ${PROJECT_BINARY_DIR}/env.avv DESTINATION share/mcabber/avv/modules RENAME env)
 
-## The End ## vim: se ts=4: ##
+## The End ## vim: se ts=4 sw=4: ##
--- a/config.h.in	Thu Nov 13 20:17:46 2014 +0200
+++ b/config.h.in	Thu Nov 13 20:18:21 2014 +0200
@@ -2,6 +2,8 @@
 #ifndef LOCAL_CONFIG_H
 #define LOCAL_CONFIG_H
 
+#cmakedefine HAVE_MCABBER_CMD_ID @HAVE_MCABBER_CMD_ID@
+
 #define PROJECT_VERSION ( "${PROJECT_VERSION}" )
 
 #endif
--- a/env.avv.in	Thu Nov 13 20:17:46 2014 +0200
+++ b/env.avv.in	Thu Nov 13 20:18:21 2014 +0200
@@ -3,10 +3,9 @@
 Method:      glib
 Version:     ${PROJECT_VERSION}
 Description: ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}
-# commands depend on building environment: 4, 3, 2+1
-# in fact, depends on completion constant COMPL_FILENAME (3, 2+1),
-# but as it is anyway disfunctional as of now, do not include it here
-Requires:    commands:4 + logprint:3
+# in fact, depends on completion constant COMPL_FILENAME (5+4+3, 2+1),
+# but as it is anyway dysfunctional as of now, do not include it here
+Requires:    ( ${AVV_COMMANDS_VERSION} ) + logprint:3
 Init:        env_load
 Uninit:      env_unload
 
--- a/env.c	Thu Nov 13 20:17:46 2014 +0200
+++ b/env.c	Thu Nov 13 20:18:21 2014 +0200
@@ -25,10 +25,10 @@
 #include <unistd.h>
 #include <errno.h>
 
-#include <mcabber/commands.h>
-#include <mcabber/compl.h>
-#include <mcabber/logprint.h>
-#include <mcabber/modules.h>
+#include <mcabber/commands.h>  // cmd_add (), cmd_del (), cmd_set_safe ()
+#include <mcabber/compl.h>     // COMPL_FILENAME
+#include <mcabber/logprint.h>  // scr_log_print ()
+#include <mcabber/modules.h>   // module_info_t
 
 #include "config.h"
 
@@ -48,7 +48,7 @@
 	.next        = NULL,
 };
 
-#ifdef MCABBER_API_HAVE_CMD_ID
+#ifdef HAVE_MCABBER_CMD_ID
 static gpointer env_env_cmid = NULL;
 static gpointer env_cd_cmid  = NULL;
 static gboolean env_env_set_safe = FALSE;
@@ -158,7 +158,7 @@
 void env_load (void)
 {
 	// command
-#ifndef MCABBER_API_HAVE_CMD_ID
+#ifndef HAVE_MCABBER_CMD_ID
 	cmd_add ("env", "", 0, 0, do_env, NULL);
 	cmd_add ("cd", "", COMPL_FILENAME, 0, do_cd, NULL);
 #else
@@ -172,7 +172,7 @@
 void env_unload (void)
 {
 	// command
-#ifndef MCABBER_API_HAVE_CMD_ID
+#ifndef HAVE_MCABBER_CMD_ID
 	cmd_del ("cd");
 	cmd_del ("env");
 #else