diff --git a/Makefile.am b/Makefile.am index d5335f7380..8ae7bea2f2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3,8 +3,9 @@ CLOCAL_AMFLAGS = -I config AM_CPPFLAGS = -I$(top_srcdir)src MSHADOW_FLAGS = -DMSHADOW_USE_CUDA=0 -DMSHADOW_USE_CBLAS=1 -DMSHADOW_USE_MKL=0 + AC_CXXFLAGS = -O3 -Wall -pthread -fPIC -std=c++11 -Wno-unknown-pragmas \ - $(MSHADOW_FLAGS) -DCPU_ONLY=1 -funroll-loops + $(MSHADOW_FLAGS) -DCPU_ONLY=1 -funroll-loops INCLUDES=-I$(top_srcdir)/include @@ -30,6 +31,7 @@ SINGA_SRCS := src/utils/cluster.cc \ src/neuralnet/layer.cc \ src/communication/socket.cc \ src/communication/msg.cc + SINGA_HDRS := include/utils/cluster.h \ include/utils/param.h \ include/utils/common.h \ diff --git a/Makefile.in b/Makefile.in index d3f322bc5d..6264e1ae5f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -226,7 +226,7 @@ CLOCAL_AMFLAGS = -I config AM_CPPFLAGS = -I$(top_srcdir)src MSHADOW_FLAGS = -DMSHADOW_USE_CUDA=0 -DMSHADOW_USE_CBLAS=1 -DMSHADOW_USE_MKL=0 AC_CXXFLAGS = -O3 -Wall -pthread -fPIC -std=c++11 -Wno-unknown-pragmas \ - $(MSHADOW_FLAGS) -DCPU_ONLY=1 -funroll-loops + $(MSHADOW_FLAGS) -DCPU_ONLY=1 -funroll-loops INCLUDES = -I$(top_srcdir)/include PROTOS := src/proto/cluster.proto src/proto/model.proto diff --git a/README.md b/README.md index 0fa7fc4c23..d4b4e088c8 100644 --- a/README.md +++ b/README.md @@ -32,12 +32,11 @@ Tips: For libraries like openblas, opencv, older versions may also work, because we do not use any newly added features. - -BUILDING SINGA SOFTWARE FROM SOURCES +BUILDING SINGA FROM SOURCES ===== Build steps ----- -The build system of SINGA is based on GNU autotools. +The build system of SINGA is based on GNU autotools. To build singa, you need gcc version >= 4.8. The common steps to build SINGA can be: 1.Extract source files; @@ -65,7 +64,7 @@ To download the thirdparty dependencies: After downloading, to install the thirdparty dependencies: $ cd thirdparty - $ ./install-dependencies.sh MISSING_LIBRARY_NAME1 YOUR_INSTALL_PATH1 MISSING_LIBRARY_NAME2 YOUR_INSTALL_PATH2 + $ ./install-dependencies.sh MISSING_LIBRARY_NAME1 YOUR_INSTALL_PATH1 MISSING_LIBRARY_NAME2 YOUR_INSTALL_PATH2 ... If you do not specify the installation path, the lirary will be installed in default folder. For example, if you want to build zeromq library in system folder and gflags in /usr/local, just run: diff --git a/configure b/configure index d9c30c8a34..7a99f5c5a8 100755 --- a/configure +++ b/configure @@ -1,8 +1,8 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for singa 0.0.1. +# Generated by GNU Autoconf 2.59 for singa 0.1. # -# Report bugs to . +# Report bugs to . # # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation @@ -423,9 +423,9 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='singa' PACKAGE_TARNAME='singa' -PACKAGE_VERSION='0.0.1' -PACKAGE_STRING='singa 0.0.1' -PACKAGE_BUGREPORT='singa@apache.com' +PACKAGE_VERSION='0.1' +PACKAGE_STRING='singa 0.1' +PACKAGE_BUGREPORT='dev@singa.incubator.apache.org' ac_unique_file="src/utils/common.cc" # Factoring default headers for most tests. @@ -954,7 +954,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures singa 0.0.1 to adapt to many kinds of systems. +\`configure' configures singa 0.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1020,7 +1020,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of singa 0.0.1:";; + short | recursive ) echo "Configuration of singa 0.1:";; esac cat <<\_ACEOF @@ -1063,7 +1063,7 @@ Some influential environment variables: Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. -Report bugs to . +Report bugs to . _ACEOF fi @@ -1159,7 +1159,7 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -singa configure 0.0.1 +singa configure 0.1 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -1173,7 +1173,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by singa $as_me 0.0.1, which was +It was created by singa $as_me 0.1, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1830,7 +1830,7 @@ fi # Define the identity of the package. PACKAGE='singa' - VERSION='0.0.1' + VERSION='0.1' cat >>confdefs.h <<_ACEOF @@ -4931,9 +4931,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >& echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to singa@apache.com ## -## ------------------------------- ## +## --------------------------------------------- ## +## Report this to dev@singa.incubator.apache.org ## +## --------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -18756,8 +18756,140 @@ if test "$ac_cv_search_cblas_sgemm" != no; then else - { { echo "$as_me:$LINENO: error: unable to find the cblas_sgemm() function" >&5 -echo "$as_me: error: unable to find the cblas_sgemm() function" >&2;} + { { echo "$as_me:$LINENO: error: unable to find cblas_sgemm() function" >&5 +echo "$as_me: error: unable to find cblas_sgemm() function" >&2;} + { (exit 1); exit 1; }; } + +fi + +echo "$as_me:$LINENO: checking for library containing zmq_ctx_new" >&5 +echo $ECHO_N "checking for library containing zmq_ctx_new... $ECHO_C" >&6 +if test "${ac_cv_search_zmq_ctx_new+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_zmq_ctx_new=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char zmq_ctx_new (); +int +main () +{ +zmq_ctx_new (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_zmq_ctx_new="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_zmq_ctx_new" = no; then + for ac_lib in zmq; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char zmq_ctx_new (); +int +main () +{ +zmq_ctx_new (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_zmq_ctx_new="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_zmq_ctx_new" >&5 +echo "${ECHO_T}$ac_cv_search_zmq_ctx_new" >&6 +if test "$ac_cv_search_zmq_ctx_new" != no; then + test "$ac_cv_search_zmq_ctx_new" = "none required" || LIBS="$ac_cv_search_zmq_ctx_new $LIBS" + +else + + { { echo "$as_me:$LINENO: error: unable to find zmq_ctx_new() function" >&5 +echo "$as_me: error: unable to find zmq_ctx_new() function" >&2;} { (exit 1); exit 1; }; } fi @@ -18888,8 +19020,8 @@ if test "$ac_cv_search_zmsg_new" != no; then else - { { echo "$as_me:$LINENO: error: unable to find the zmsg_new() function" >&5 -echo "$as_me: error: unable to find the zmsg_new() function" >&2;} + { { echo "$as_me:$LINENO: error: unable to find zmsg_new() function" >&5 +echo "$as_me: error: unable to find zmsg_new() function" >&2;} { (exit 1); exit 1; }; } fi @@ -18962,8 +19094,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: unable to find the InitGoogleLogging() function" >&5 -echo "$as_me: error: unable to find the InitGoogleLogging() function" >&2;} + { { echo "$as_me:$LINENO: error: unable to find gflags library" >&5 +echo "$as_me: error: unable to find gflags library" >&2;} { (exit 1); exit 1; }; } fi @@ -19036,8 +19168,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: unable to find the InitGoogleLogging() function" >&5 -echo "$as_me: error: unable to find the InitGoogleLogging() function" >&2;} + { { echo "$as_me:$LINENO: error: unable to find glog library" >&5 +echo "$as_me: error: unable to find glog library" >&2;} { (exit 1); exit 1; }; } fi @@ -19110,8 +19242,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: unable to find the InitGoogleLogging() function" >&5 -echo "$as_me: error: unable to find the InitGoogleLogging() function" >&2;} + { { echo "$as_me:$LINENO: error: unable to find protobuf library" >&5 +echo "$as_me: error: unable to find protobuf library" >&2;} { (exit 1); exit 1; }; } fi @@ -19184,8 +19316,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: unable to find the opencv_imgproc" >&5 -echo "$as_me: error: unable to find the opencv_imgproc" >&2;} + { { echo "$as_me:$LINENO: error: unable to find opencv_imgproc lib" >&5 +echo "$as_me: error: unable to find opencv_imgproc lib" >&2;} { (exit 1); exit 1; }; } fi @@ -19258,8 +19390,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: unable to find the opencv_highgui" >&5 -echo "$as_me: error: unable to find the opencv_highgui" >&2;} + { { echo "$as_me:$LINENO: error: unable to find opencv_highgui lib" >&5 +echo "$as_me: error: unable to find opencv_highgui lib" >&2;} { (exit 1); exit 1; }; } fi @@ -19332,8 +19464,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: unable to find the opencv_core" >&5 -echo "$as_me: error: unable to find the opencv_core" >&2;} + { { echo "$as_me:$LINENO: error: unable to find opencv_core lib" >&5 +echo "$as_me: error: unable to find opencv_core lib" >&2;} { (exit 1); exit 1; }; } fi @@ -19464,140 +19596,8 @@ if test "$ac_cv_search_mdb_env_create" != no; then else - { { echo "$as_me:$LINENO: error: unable to find the mdb_env_create() function" >&5 -echo "$as_me: error: unable to find the mdb_env_create() function" >&2;} - { (exit 1); exit 1; }; } - -fi - -echo "$as_me:$LINENO: checking for library containing zmq_ctx_new" >&5 -echo $ECHO_N "checking for library containing zmq_ctx_new... $ECHO_C" >&6 -if test "${ac_cv_search_zmq_ctx_new+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_zmq_ctx_new=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char zmq_ctx_new (); -int -main () -{ -zmq_ctx_new (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_zmq_ctx_new="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_zmq_ctx_new" = no; then - for ac_lib in zmq; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char zmq_ctx_new (); -int -main () -{ -zmq_ctx_new (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_zmq_ctx_new="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_zmq_ctx_new" >&5 -echo "${ECHO_T}$ac_cv_search_zmq_ctx_new" >&6 -if test "$ac_cv_search_zmq_ctx_new" != no; then - test "$ac_cv_search_zmq_ctx_new" = "none required" || LIBS="$ac_cv_search_zmq_ctx_new $LIBS" - -else - - { { echo "$as_me:$LINENO: error: unable to find the czmq() function" >&5 -echo "$as_me: error: unable to find the czmq() function" >&2;} + { { echo "$as_me:$LINENO: error: unable to find mdb_env_create() function" >&5 +echo "$as_me: error: unable to find mdb_env_create() function" >&2;} { (exit 1); exit 1; }; } fi @@ -19894,9 +19894,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >& echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to singa@apache.com ## -## ------------------------------- ## +## --------------------------------------------- ## +## Report this to dev@singa.incubator.apache.org ## +## --------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -20513,9 +20513,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >& echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------- ## -## Report this to singa@apache.com ## -## ------------------------------- ## +## --------------------------------------------- ## +## Report this to dev@singa.incubator.apache.org ## +## --------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -21258,7 +21258,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF -This file was extended by singa $as_me 0.0.1, which was +This file was extended by singa $as_me 0.1, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21321,7 +21321,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -singa config.status 0.0.1 +singa config.status 0.1 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff --git a/configure.ac b/configure.ac index 3dc340387f..200df7f0a5 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT(singa, 0.0.1, singa@apache.com) +AC_INIT(singa, 0.1, dev@singa.incubator.apache.org) AC_CONFIG_AUX_DIR(config) AC_CONFIG_MACRO_DIR(config) AC_CONFIG_SRCDIR([src/utils/common.cc]) @@ -18,34 +18,34 @@ AC_PROG_LIBTOOL # Checks for libraries. AC_SEARCH_LIBS([cblas_sgemm], [openblas], [], [ - AC_MSG_ERROR([unable to find the cblas_sgemm() function]) + AC_MSG_ERROR([unable to find cblas_sgemm() function]) ]) +AC_SEARCH_LIBS([zmq_ctx_new], [zmq], [], [ + AC_MSG_ERROR([unable to find zmq_ctx_new() function]) + ]) AC_SEARCH_LIBS([zmsg_new], [czmq], [], [ - AC_MSG_ERROR([unable to find the zmsg_new() function]) + AC_MSG_ERROR([unable to find zmsg_new() function]) ]) AC_CHECK_LIB([gflags], [main], [], [ - AC_MSG_ERROR([unable to find the InitGoogleLogging() function]) + AC_MSG_ERROR([unable to find gflags library]) ]) AC_CHECK_LIB([glog], [main], [], [ - AC_MSG_ERROR([unable to find the InitGoogleLogging() function]) + AC_MSG_ERROR([unable to find glog library]) ]) AC_CHECK_LIB([protobuf], [main], [], [ - AC_MSG_ERROR([unable to find the InitGoogleLogging() function]) + AC_MSG_ERROR([unable to find protobuf library]) ]) AC_CHECK_LIB([opencv_imgproc], [main], [], [ - AC_MSG_ERROR([unable to find the opencv_imgproc]) + AC_MSG_ERROR([unable to find opencv_imgproc lib]) ]) AC_CHECK_LIB([opencv_highgui], [main], [], [ - AC_MSG_ERROR([unable to find the opencv_highgui]) + AC_MSG_ERROR([unable to find opencv_highgui lib]) ]) AC_CHECK_LIB([opencv_core], [main], [], [ - AC_MSG_ERROR([unable to find the opencv_core]) + AC_MSG_ERROR([unable to find opencv_core lib]) ]) AC_SEARCH_LIBS([mdb_env_create], [lmdb], [], [ - AC_MSG_ERROR([unable to find the mdb_env_create() function]) - ]) -AC_SEARCH_LIBS([zmq_ctx_new], [zmq], [], [ - AC_MSG_ERROR([unable to find the czmq() function]) + AC_MSG_ERROR([unable to find mdb_env_create() function]) ]) # Checks for header files.