167 lines
5.0 KiB
Plaintext
167 lines
5.0 KiB
Plaintext
|
## Process this file with autoconf to produce configure.
|
||
|
|
||
|
AC_INIT([Capn Proto],[0.7.0],[capnproto@googlegroups.com],[capnproto-c++])
|
||
|
|
||
|
AC_CONFIG_SRCDIR([src/capnp/layout.c++])
|
||
|
AC_CONFIG_AUX_DIR([build-aux])
|
||
|
AC_CONFIG_HEADERS([config.h])
|
||
|
AC_CONFIG_MACRO_DIR([m4])
|
||
|
|
||
|
# autoconf's default CXXFLAGS are usually "-g -O2". A far more reasonable
|
||
|
# default is -O2 -NDEBUG.
|
||
|
AS_IF([test "x${ac_cv_env_CFLAGS_set}" = "x"],
|
||
|
[CFLAGS="-O2 -DNDEBUG"])
|
||
|
AS_IF([test "x${ac_cv_env_CXXFLAGS_set}" = "x"],
|
||
|
[CXXFLAGS="-O2 -DNDEBUG"])
|
||
|
|
||
|
AM_INIT_AUTOMAKE([tar-ustar])
|
||
|
|
||
|
AC_ARG_WITH([external-capnp],
|
||
|
[AS_HELP_STRING([--with-external-capnp],
|
||
|
[use the system capnp binary (or the one specified with $CAPNP) instead of compiling a new
|
||
|
one (useful for cross-compiling)])],
|
||
|
[external_capnp=yes],[external_capnp=no])
|
||
|
|
||
|
AC_ARG_WITH([openssl],
|
||
|
[AS_HELP_STRING([--with-openssl],
|
||
|
[build libkj-tls by linking against openssl @<:@default=check@:>@])],
|
||
|
[],[with_openssl=check])
|
||
|
|
||
|
AC_ARG_ENABLE([reflection], [
|
||
|
AS_HELP_STRING([--disable-reflection], [
|
||
|
compile Cap'n Proto in "lite mode", in which all reflection APIs (schema.h, dynamic.h, etc.)
|
||
|
are not included. Produces a smaller library at the cost of features. All programs built
|
||
|
against the library MUST be compiled with -DCAPNP_LITE=1. Note that because the compiler
|
||
|
itself uses reflection in its implementation, you must also use --with-external-capnp when
|
||
|
using this option.])
|
||
|
], [
|
||
|
case "${enableval}" in
|
||
|
yes)
|
||
|
lite_mode=no
|
||
|
;;
|
||
|
no)
|
||
|
lite_mode=yes
|
||
|
AS_IF([test "$external_capnp" != "yes"], [
|
||
|
AC_MSG_ERROR([you must specify --with-external-capnp when using --disable-reflection])
|
||
|
])
|
||
|
;;
|
||
|
*)
|
||
|
AC_MSG_ERROR([bad value ${enableval} for --enable-reflection])
|
||
|
;;
|
||
|
esac
|
||
|
], [lite_mode=no])
|
||
|
|
||
|
# Checks for programs.
|
||
|
AC_PROG_CC
|
||
|
AC_PROG_CXX
|
||
|
AC_LANG([C++])
|
||
|
AX_CXX_COMPILE_STDCXX_14
|
||
|
|
||
|
AS_CASE("${host_os}", *mingw*, [
|
||
|
# We don't use pthreads on MinGW.
|
||
|
PTHREAD_CFLAGS="-mthreads"
|
||
|
PTHREAD_LIBS=""
|
||
|
PTHREAD_CC=""
|
||
|
ASYNC_LIBS="-lws2_32"
|
||
|
AC_SUBST(PTHREAD_LIBS)
|
||
|
AC_SUBST(PTHREAD_CFLAGS)
|
||
|
AC_SUBST(PTHREAD_CC)
|
||
|
AC_SUBST(ASYNC_LIBS)
|
||
|
], *, [
|
||
|
ACX_PTHREAD
|
||
|
ASYNC_LIBS=""
|
||
|
AC_SUBST(ASYNC_LIBS)
|
||
|
])
|
||
|
|
||
|
LT_INIT
|
||
|
|
||
|
AS_IF([test "$external_capnp" != "no"], [
|
||
|
AS_IF([test "x$CAPNP" = "x"], [CAPNP="capnp"], [with_capnp=yes])
|
||
|
AS_IF([test "x$CAPNPC_CXX" = "x"], [
|
||
|
# CAPNPC_CXX was not specified. Choose a reasonable default.
|
||
|
AS_CASE([$CAPNP], [*/*], [
|
||
|
# $CAPNP contains a slash, so it's not on $PATH. Assume capnpc-c++ is not either, but is
|
||
|
# in the same directory.
|
||
|
CAPNPC_CXX=`dirname $CAPNP`/capnpc-c++
|
||
|
], [
|
||
|
# $CAPNP is on $PATH, so tell it to find the plugin on $PATH as well.
|
||
|
CAPNPC_CXX="c++"
|
||
|
])
|
||
|
])
|
||
|
AC_SUBST([CAPNP])
|
||
|
AC_SUBST([CAPNPC_CXX])
|
||
|
])
|
||
|
AM_CONDITIONAL([USE_EXTERNAL_CAPNP], [test "$external_capnp" != "no"])
|
||
|
|
||
|
AM_CONDITIONAL([LITE_MODE], [test "$lite_mode" = "yes"])
|
||
|
|
||
|
AS_IF([test "$lite_mode" = "yes"], [
|
||
|
CXXFLAGS="-DCAPNP_LITE $CXXFLAGS"
|
||
|
CAPNP_LITE_FLAG=-DCAPNP_LITE
|
||
|
])
|
||
|
AC_SUBST([CAPNP_LITE_FLAG])
|
||
|
|
||
|
AC_SEARCH_LIBS(sched_yield, rt)
|
||
|
|
||
|
# Users will need to use the same -stdlib as us so we'd better let pkg-config know about it.
|
||
|
STDLIB_FLAG=`echo "$CXX $CXXFLAGS" | grep -o ' [[-]]stdlib=[[^ ]]*'`
|
||
|
AC_SUBST([STDLIB_FLAG])
|
||
|
|
||
|
LIBS="$PTHREAD_LIBS $LIBS"
|
||
|
CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS"
|
||
|
|
||
|
AC_DEFUN([CAPNP_PKG_CONFIG_FILES], [ \
|
||
|
pkgconfig/capnp.pc \
|
||
|
pkgconfig/capnp-rpc.pc \
|
||
|
pkgconfig/capnp-json.pc \
|
||
|
pkgconfig/kj.pc \
|
||
|
pkgconfig/kj-async.pc \
|
||
|
pkgconfig/kj-http.pc \
|
||
|
pkgconfig/kj-test.pc \
|
||
|
])
|
||
|
AC_DEFUN([CAPNP_CMAKE_CONFIG_FILES], [ \
|
||
|
cmake/CapnProtoConfig.cmake \
|
||
|
cmake/CapnProtoConfigVersion.cmake \
|
||
|
])
|
||
|
|
||
|
[CAPNP_PKG_CONFIG_FILES]="CAPNP_PKG_CONFIG_FILES"
|
||
|
[CAPNP_CMAKE_CONFIG_FILES]="CAPNP_CMAKE_CONFIG_FILES"
|
||
|
AC_SUBST([CAPNP_PKG_CONFIG_FILES])
|
||
|
AC_SUBST([CAPNP_CMAKE_CONFIG_FILES])
|
||
|
|
||
|
# CapnProtoConfig.cmake.in needs these PACKAGE_* output variables.
|
||
|
PACKAGE_INIT="set([CAPNP_PKG_CONFIG_FILES] CAPNP_PKG_CONFIG_FILES)"
|
||
|
PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR="\${CMAKE_CURRENT_LIST_DIR}/../../../include"
|
||
|
AC_SUBST([PACKAGE_INIT])
|
||
|
AC_SUBST([PACKAGE_CMAKE_INSTALL_FULL_INCLUDEDIR])
|
||
|
|
||
|
# CapnProtoConfigVersion.cmake.in needs PACKAGE_VERSION (already defined by AC_INIT) and
|
||
|
# CMAKE_SIZEOF_VOID_P output variables.
|
||
|
AC_CHECK_SIZEOF([void *])
|
||
|
AC_SUBST(CMAKE_SIZEOF_VOID_P, $ac_cv_sizeof_void_p)
|
||
|
|
||
|
# Detect presence of OpenSSL, if it was not specified explicitly.
|
||
|
AS_IF([test "$with_openssl" = check], [
|
||
|
AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [:], [
|
||
|
with_openssl=no
|
||
|
])
|
||
|
AC_CHECK_LIB(ssl, OPENSSL_init_ssl, [:], [
|
||
|
with_openssl=no
|
||
|
], [-lcrypto])
|
||
|
AC_CHECK_HEADER([openssl/ssl.h], [:], [
|
||
|
with_openssl=no
|
||
|
])
|
||
|
AS_IF([test "$with_openssl" = no], [
|
||
|
AC_MSG_WARN("could not find OpenSSL -- won't build libkj-tls")
|
||
|
], [
|
||
|
with_openssl=yes
|
||
|
])
|
||
|
])
|
||
|
AS_IF([test "$with_openssl" != no], [
|
||
|
CXXFLAGS="$CXXFLAGS -DKJ_HAS_OPENSSL"
|
||
|
])
|
||
|
AM_CONDITIONAL([BUILD_KJ_TLS], [test "$with_openssl" != no])
|
||
|
|
||
|
AC_CONFIG_FILES([Makefile] CAPNP_PKG_CONFIG_FILES CAPNP_CMAKE_CONFIG_FILES)
|
||
|
AC_OUTPUT
|