| AC_INIT(msgpack, m4_esyscmd([cat include/msgpack/version_master.h | tr -d "\n" | sed -e 's/#define MSGPACK_VERSION_MAJOR[[:space:]]*\([[:alnum:]]*\)/\1./g' -e 's/#define MSGPACK_VERSION_MINOR[[:space:]]*\([[:alnum:]]*\)/\1./g' -e 's/#define MSGPACK_VERSION_REVISION[[:space:]]*\([[:alnum:]]*\)/\1/g' | tr -d "\n"])) |
| AC_CONFIG_AUX_DIR(ac) |
| AM_INIT_AUTOMAKE |
| AC_CONFIG_HEADER(config.h) |
| AC_SUBST(CFLAGS) |
| CFLAGS="-O3 -Wall -Wextra -Werror $CFLAGS" |
| |
| AC_SUBST(CXXFLAGS) |
| CXXFLAGS="-O3 -Wall -Wextra -Wno-mismatched-tags -Werror $CXXFLAGS" |
| |
| |
| AC_PROG_CC |
| |
| |
| AC_MSG_CHECKING([if C++ API is enabled]) |
| AC_ARG_ENABLE(cxx, |
| AS_HELP_STRING([--disable-cxx], |
| [don't build C++ API]) ) #' |
| AC_MSG_RESULT([$enable_cxx]) |
| if test "$enable_cxx" != "no"; then |
| AC_PROG_CXX |
| AM_PROG_CC_C_O |
| fi |
| AM_CONDITIONAL(ENABLE_CXX, test "$enable_cxx" != "no") |
| |
| |
| AC_PROG_LIBTOOL |
| AM_PROG_AS |
| |
| |
| AC_MSG_CHECKING([if debug option is enabled]) |
| AC_ARG_ENABLE(debug, |
| AS_HELP_STRING([--disable-debug], |
| [disable assert macros and omit -g option]) ) |
| AC_MSG_RESULT([$enable_debug]) |
| if test "$enable_debug" != "no"; then |
| CXXFLAGS="$CXXFLAGS -g" |
| CFLAGS="$CFLAGS -g" |
| else |
| CXXFLAGS="$CXXFLAGS -DNDEBUG" |
| CFLAGS="$CFLAGS -DNDEBUG" |
| fi |
| |
| |
| AC_CACHE_CHECK([for __sync_* atomic operations], msgpack_cv_atomic_ops, [ |
| AC_TRY_LINK([ |
| int atomic_sub(int i) { return __sync_sub_and_fetch(&i, 1); } |
| int atomic_add(int i) { return __sync_add_and_fetch(&i, 1); } |
| ], [atomic_sub(1); atomic_add(1);], msgpack_cv_atomic_ops="yes") |
| ]) |
| if test "$msgpack_cv_atomic_ops" != "yes"; then |
| if test "$enable_cxx" = "no"; then |
| AC_MSG_ERROR([__sync_* atomic operations are not found. Try to enable C++ support. |
| If you are using gcc >= 4.1 and the default target CPU architecture is "i386", try to |
| add CFLAGS="-march=i686" and CXXFLAGS="-march=i686" options to ./configure as follows: |
| |
| $ ./configure CFLAGS="-march=i686" CXXFLAGS="-march=i686" |
| ]) |
| fi |
| |
| AC_LANG_PUSH([C++]) |
| AC_CACHE_CHECK([for __gnu_cxx::__exchange_and_add], msgpack_cv_gcc_cxx_atomic_ops, [ |
| AC_TRY_LINK([ |
| #include <bits/atomicity.h> |
| int atomic_sub(int i) { return __gnu_cxx::__exchange_and_add(&i, -1) - 1; } |
| int atomic_add(int i) { return __gnu_cxx::__exchange_and_add(&i, 1) + 1; } |
| ], [atomic_sub(1); atomic_add(1);], msgpack_cv_gcc_cxx_atomic_ops="yes") |
| ]) |
| AC_LANG_POP([C++]) |
| |
| if test "$msgpack_cv_gcc_cxx_atomic_ops" != "yes"; then |
| AC_MSG_ERROR([__sync_* atomic operations nor __gnu_cxx::__exchange_and_add are not found. |
| |
| If you are using gcc >= 4.1 and the default target CPU architecture is "i386", try to |
| add CFLAGS="-march=i686" and CXXFLAGS="-march=i686" options to ./configure as follows: |
| |
| $ ./configure CFLAGS="-march=i686" CXXFLAGS="-march=i686" |
| ]) |
| |
| else |
| enable_gcc_cxx_atomic=yes |
| fi |
| fi |
| |
| AM_CONDITIONAL(ENABLE_GCC_CXX_ATOMIC, test "$enable_gcc_cxx_atomic" = "yes") |
| |
| major=`echo $VERSION | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).\([[0-9]]*\).*/\1/'` |
| minor=`echo $VERSION | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).\([[0-9]]*\).*/\2/'` |
| revision=`echo $VERSION | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).\([[0-9]]*\).*/\3/'` |
| AC_SUBST(VERSION_MAJOR, $major) |
| AC_SUBST(VERSION_MINOR, $minor) |
| AC_SUBST(VERSION_REVISION, $revision) |
| |
| |
| AC_OUTPUT([Makefile |
| msgpack.pc |
| src/Makefile |
| test/Makefile]) |