diff --git a/config.m4 b/config.m4 new file mode 100644 index 0000000..799f3aa --- /dev/null +++ b/config.m4 @@ -0,0 +1,55 @@ +dnl $Id$ +dnl config.m4 for extension libmosquitto + +dnl Comments in this file start with the string 'dnl'. +dnl Remove where necessary. This file will not work +dnl without editing. + +PHP_ARG_WITH(libmosquitto, for libmosquitto support, +[ --with-libmosquitto Include libmosquitto support]) + + +if test "$PHP_LIBMOSQUITTO" != "no"; then + dnl Write more examples of tests here... + + # --with-libmosquitto -> check with-path + SEARCH_PATH="/usr/local /usr" # you might want to change this + SEARCH_FOR="/include/libmosquitto.h" # you most likely want to change this + if test -r $PHP_LIBMOSQUITTO/$SEARCH_FOR; then # path given as parameter + LIBMOSQUITTO_DIR=$PHP_LIBMOSQUITTO + else # search default path list + AC_MSG_CHECKING([for libmosquitto files in default path]) + for i in $SEARCH_PATH ; do + if test -r $i/$SEARCH_FOR; then + LIBMOSQUITTO_DIR=$i + AC_MSG_RESULT(found in $i) + fi + done + fi + + if test -z "$LIBMOSQUITTO_DIR"; then + AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Please reinstall the libmosquitto distribution]) + fi + + # --with-libmosquitto -> add include path + PHP_ADD_INCLUDE($LIBMOSQUITTO_DIR/include) + + # --with-libmosquitto -> check for lib and symbol presence + LIBNAME=libmosquitto # you may want to change this + LIBSYMBOL=mosquitto_init # you most likely want to change this + + PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL, + [ + PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $LIBMOSQUITTO_DIR/lib, LIBMOSQUITTO_SHARED_LIBADD) + AC_DEFINE(HAVE_LIBMOSQUITTOLIB,1,[ ]) + ],[ + AC_MSG_ERROR([wrong libmosquitto lib version or lib not found]) + ],[ + -L$LIBMOSQUITTO_DIR/lib -lm + ]) + + PHP_SUBST(LIBMOSQUITTO_SHARED_LIBADD) + + PHP_NEW_EXTENSION(libmosquitto, libmosquitto.c, $ext_shared) +fi diff --git a/libmosquitto.c b/libmosquitto.c new file mode 100644 index 0000000..72adec8 --- /dev/null +++ b/libmosquitto.c @@ -0,0 +1,122 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "php.h" +#include "php_ini.h" +#include "ext/standard/info.h" +#include "php_libmosquitto.h" + +/* {{{ libmosquitto_functions[] */ +const zend_function_entry libmosquitto_functions[] = { + PHP_FE_END /* Must be the last line in libmosquitto_functions[] */ +}; +/* }}} */ + +/* {{{ libmosquitto_module_entry */ +zend_module_entry libmosquitto_module_entry = { +#if ZEND_MODULE_API_NO >= 20010901 + STANDARD_MODULE_HEADER, +#endif + "libmosquitto", + libmosquitto_functions, + PHP_MINIT(libmosquitto), + PHP_MSHUTDOWN(libmosquitto), + PHP_RINIT(libmosquitto), /* Replace with NULL if there's nothing to do at request start */ + PHP_RSHUTDOWN(libmosquitto), /* Replace with NULL if there's nothing to do at request end */ + PHP_MINFO(libmosquitto), +#if ZEND_MODULE_API_NO >= 20010901 + "0.1", /* Replace with version number for your extension */ +#endif + STANDARD_MODULE_PROPERTIES +}; +/* }}} */ + +#ifdef COMPILE_DL_LIBMOSQUITTO +ZEND_GET_MODULE(libmosquitto) +#endif + +/* {{{ PHP_INI + */ +/* Remove comments and fill if you need to have entries in php.ini +PHP_INI_BEGIN() + STD_PHP_INI_ENTRY("libmosquitto.global_value", "42", PHP_INI_ALL, OnUpdateLong, global_value, zend_libmosquitto_globals, libmosquitto_globals) + STD_PHP_INI_ENTRY("libmosquitto.global_string", "foobar", PHP_INI_ALL, OnUpdateString, global_string, zend_libmosquitto_globals, libmosquitto_globals) +PHP_INI_END() +*/ +/* }}} */ + +/* {{{ php_libmosquitto_init_globals + */ +/* Uncomment this function if you have INI entries +static void php_libmosquitto_init_globals(zend_libmosquitto_globals *libmosquitto_globals) +{ + libmosquitto_globals->global_value = 0; + libmosquitto_globals->global_string = NULL; +} +*/ +/* }}} */ + +/* {{{ PHP_MINIT_FUNCTION + */ +PHP_MINIT_FUNCTION(libmosquitto) +{ + /* If you have INI entries, uncomment these lines + REGISTER_INI_ENTRIES(); + */ + return SUCCESS; +} +/* }}} */ + +/* {{{ PHP_MSHUTDOWN_FUNCTION + */ +PHP_MSHUTDOWN_FUNCTION(libmosquitto) +{ + /* uncomment this line if you have INI entries + UNREGISTER_INI_ENTRIES(); + */ + return SUCCESS; +} +/* }}} */ + +/* Remove if there's nothing to do at request start */ +/* {{{ PHP_RINIT_FUNCTION + */ +PHP_RINIT_FUNCTION(libmosquitto) +{ + return SUCCESS; +} +/* }}} */ + +/* Remove if there's nothing to do at request end */ +/* {{{ PHP_RSHUTDOWN_FUNCTION + */ +PHP_RSHUTDOWN_FUNCTION(libmosquitto) +{ + return SUCCESS; +} +/* }}} */ + +/* {{{ PHP_MINFO_FUNCTION + */ +PHP_MINFO_FUNCTION(libmosquitto) +{ + php_info_print_table_start(); + php_info_print_table_header(2, "libmosquitto support", "enabled"); + php_info_print_table_end(); + + /* Remove comments if you have entries in php.ini + DISPLAY_INI_ENTRIES(); + */ +} +/* }}} */ + + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ diff --git a/php_libmosquitto.h b/php_libmosquitto.h new file mode 100644 index 0000000..32a8056 --- /dev/null +++ b/php_libmosquitto.h @@ -0,0 +1,27 @@ +#ifndef PHP_LIBMOSQUITTO_H +#define PHP_LIBMOSQUITTO_H + +extern zend_module_entry libmosquitto_module_entry; +#define phpext_libmosquitto_ptr &libmosquitto_module_entry + +#ifdef PHP_WIN32 +# define PHP_LIBMOSQUITTO_API __declspec(dllexport) +#elif defined(__GNUC__) && __GNUC__ >= 4 +# define PHP_LIBMOSQUITTO_API __attribute__ ((visibility("default"))) +#else +# define PHP_LIBMOSQUITTO_API +#endif + +#ifdef ZTS +#include "TSRM.h" +#endif + +PHP_MINIT_FUNCTION(libmosquitto); +PHP_MSHUTDOWN_FUNCTION(libmosquitto); +PHP_RINIT_FUNCTION(libmosquitto); +PHP_RSHUTDOWN_FUNCTION(libmosquitto); +PHP_MINFO_FUNCTION(libmosquitto); + +#endif /* PHP_LIBMOSQUITTO_H */ + +/* __footer_here__ */