diff options
Diffstat (limited to '')
-rw-r--r-- | configure.ac | 331 |
1 files changed, 331 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..cbf0166 --- /dev/null +++ b/configure.ac @@ -0,0 +1,331 @@ +AC_INIT([lnav],[0.11.1],[lnav@googlegroups.com],[lnav],[http://lnav.org]) +AC_CONFIG_SRCDIR([src/lnav.cc]) +AC_CONFIG_MACRO_DIR([m4]) +AM_INIT_AUTOMAKE([foreign subdir-objects]) +AM_SILENT_RULES([yes]) + +AC_PREFIX_DEFAULT(/usr) + +AC_CANONICAL_HOST +AX_PROG_CC_FOR_BUILD + +AX_PTHREAD() +LIBS="$PTHREAD_LIBS $LIBS" +CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +CC="$PTHREAD_CC" + +AC_LANG(C++) +AX_CXX_COMPILE_STDCXX_14([noext], [mandatory]) + +AC_ARG_ENABLE( + [system-paths], + AS_HELP_STRING([--disable-system-paths], + [Add extra system paths]),,[enable_system_paths=yes]) + +if test x"${enable_system_paths}" != x"no"; then + for defdir in /opt/local /usr/local; do + if test -d "$defdir/include"; then + echo "Adding include path: $defdir/include" + CPPFLAGS="$CPPFLAGS -I$defdir/include" + fi + done + + for defdir in /opt/local /usr/local /usr /; do + + if test -d "$defdir/lib64"; then + LDFLAGS="$LDFLAGS -L$defdir/lib64" + fi + if test -d "$defdir/lib"; then + LDFLAGS="$LDFLAGS -L$defdir/lib" + fi + + if test -d "$defdir/lib/x86_64-linux-gnu"; then + LDFLAGS="$LDFLAGS -L$defdir/lib/x86_64-linux-gnu" + fi + done +else + echo "Not including extra system paths" +fi + +dnl abssrcdir is the absolute path to the source base (regardless of where +dnl you are building it) +AS_CASE([x$srcdir], + [x/*], + AS_VAR_SET(abssrcdir, $srcdir), + AS_VAR_SET(abssrcdir, `cd $srcdir; pwd`) +) + +AC_SUBST(abssrcdir) + +AC_PROG_CXX + +CPPFLAGS="$CPPFLAGS -D_ISOC99_SOURCE -D__STDC_LIMIT_MACROS -D_GNU_SOURCE" + +AC_ARG_ENABLE([debug], + AS_HELP_STRING([--enable-debug], + [Compile with symbols])) + +AS_VAR_IF([enable_profiling], [yes], + [CFLAGS=`echo $CFLAGS | sed 's/-O2//g'` + CXXFLAGS=`echo $CXXFLAGS | sed 's/-O2//g'`], + [enable_debug=no]dnl +) + +AC_ARG_VAR(SFTP_TEST_URL) + +AC_PROG_INSTALL +AC_PROG_RANLIB +AM_PROG_AR +AC_PROG_LN_S +AC_PROG_MAKE_SET + +AC_PATH_PROG(BZIP2_CMD, [bzip2]) +AC_PATH_PROG(RE2C_CMD, [re2c]) +AM_CONDITIONAL(HAVE_RE2C, test x"$RE2C_CMD" != x"") +AC_PATH_PROG(XZ_CMD, [xz]) +AC_PATH_PROG(TSHARK_CMD, [tshark]) + +AC_CHECK_SIZEOF(off_t) +AC_CHECK_SIZEOF(size_t) + +AC_STRUCT_TIMEZONE + +AC_ARG_ENABLE([static], + AS_HELP_STRING([--enable-static], + [Enable static linking])) + +AC_SEARCH_LIBS(openpty, util) +AC_SEARCH_LIBS(gzseek, z, [], [AC_MSG_ERROR([libz required to build])]) +AC_SEARCH_LIBS(BZ2_bzopen, bz2, + AS_VAR_SET(BZIP2_SUPPORT, 1), + AS_VAR_SET(BZIP2_SUPPORT, 0)) +AC_SUBST(BZIP2_SUPPORT) +AC_SEARCH_LIBS(dlopen, dl) +AC_SEARCH_LIBS(backtrace, execinfo) +LIBCURL_CHECK_CONFIG([], [7.23.0], [], [AC_MSG_ERROR([libcurl required to build])], [test x"${enable_static}" = x"yes"]) + +# Sometimes, curses depends on these libraries being linked in... +AC_ARG_ENABLE([tinfo], + AS_HELP_STRING([--disable-tinfo], + [Disable linking with tinfo, enabled by default]), + [], [enable_tinfo="yes"] +) + +AS_IF([test "x${enable_tinfo}" != "xno"], + [dnl + AC_MSG_NOTICE([Trying to link with tinfo]) + AC_SEARCH_LIBS(cur_term, [tinfow tinfo], + AC_MSG_NOTICE([Linking with tinfo]), + AC_MSG_WARN([libtinfo not found]) + ) + ], + AC_MSG_NOTICE([Building with tinfo linking disabled]) +) + +dnl libgpm is required on some systems where there is a misconfigured ncurses +dnl and gpm libraries with interdependencies. This check is not required on OS X. +AS_CASE(["$host_os"], + [darwin*], + [], + AC_SEARCH_LIBS(Gpm_Open, [gpm :libgpm.so.2], + AS_VAR_SET(HAVE_GPM, "1"), + AC_MSG_WARN(m4_join([ ], + [libgpm not found. If build fails later], + [consider installing gpm dev package])dnl + ) + ) +) + +AC_CHECK_HEADERS(execinfo.h pty.h util.h zlib.h bzlib.h libutil.h sys/ttydefaults.h) + +dnl Experimental SIMD features. +AC_ARG_ENABLE([simd], + AS_HELP_STRING([--enable-simd], [Try and enable simd optimizations]), + [ + AS_CASE(["$enable_simd"], + [no], [enable_simd="no"], + [yes | ""],[enable_simd="yes"]) + ], + [] +) + +AS_IF([test "x$enable_simd" = "xyes"], [ + AC_CHECK_HEADERS(x86intrin.h) +]) + + +AC_ARG_WITH([system_doctest], + AS_HELP_STRING( + [--with-system-doctest], + [Use the system provided doctest library rather than the bundled one] + ), + [], [] +) + +AS_IF([test "x$with_system_doctest" = "xyes"], [ + AC_CHECK_HEADERS(doctest/doctest.h) + AS_IF([test "x$ac_cv_header_doctest_doctest_h" != "xyes"], [ + AC_MSG_ERROR([system doctest not found])dnl + ]) +]) +AS_IF([test "x$with_system_doctest" != "xyes"], [ + CPPFLAGS="-I\$(top_srcdir)/src/third-party/doctest-root $CPPFLAGS" +]) + + +LNAV_WITH_JEMALLOC + +LNAV_WITH_LOCAL_YAJL + +AX_WITH_CURSES + +AS_VAR_IF([ax_cv_curses],[yes],[], + AC_MSG_ERROR([requires an X/Open-compatible Curses library with color])dnl +) + +AX_PATH_LIB_ARCHIVE +AX_CHECK_PCRE2([8], [], [AC_MSG_ERROR([pcre2 is required to build])]) +AX_PATH_LIB_READLINE + +AX_CODE_COVERAGE + +LNAV_WITH_SQLITE3("3.9.0") + +dnl case "$host_os" in +dnl *) +dnl # AC_DEFINE([_XOPEN_SOURCE], [500], [Need pread]) +dnl AC_DEFINE([_DEFAULT_SOURCE], [1], [Need pread]) +dnl AC_DEFINE([_BSD_SOURCE], [1], [Need pread]) +dnl ;; +dnl esac + +AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [Wide character support for ncurses]) + +AS_VAR_SET(ALL_LDFLAGS, "$SQLITE3_LDFLAGS $READLINE_LDFLAGS $LIBARCHIVE_LDFLAGS $LIBCURL $LDFLAGS") + +AS_VAR_SET(static_lib_list, + ["libncurses.a libncursesw.a libreadline.a libsqlite3.a libz.a libtinfo.a libtinfow.a"]) +AS_VAR_SET(static_lib_list, + ["$static_lib_list libpcre2-8.a libncursesw.a libbz2.a"]) +AS_VAR_SET(static_lib_list, + ["$static_lib_list libgpm.a libcurl.a libcrypto.a libssl.a libssh2.a"]) +AS_VAR_SET(static_lib_list, + ["$static_lib_list libnghttp2.a liblzma.a libcrypto.a libzstd.a libldap.a"]) +AS_VAR_SET(static_lib_list, + ["$static_lib_list libarchive.a libidn2.a libgssapi_krb5.a libbrotlidec-static.a"]) +AS_VAR_SET(static_lib_list, + ["$static_lib_list librtmp.a libiconv.a liblz4.a liblber.a libunistring.a"]) + +if test x"${enable_static}" = x"yes"; then + case "$host_os" in + darwin*) + STATIC_LDFLAGS="$STATIC_LDFLAGS -Wl,-search_paths_first" + ;; + esac + + AX_CHECK_LINK_FLAG([-static-libgcc], [STATIC_LDFLAGS="$STATIC_LDFLAGS -static-libgcc"]) + + STATIC_LDFLAGS="$STATIC_LDFLAGS -L`pwd`/src/static-libs" + AX_CHECK_LINK_FLAG([-static-libstdc++], + [STATIC_LDFLAGS="$STATIC_LDFLAGS -static-libstdc++"]) + # This is a hack to link against static libraries instead of shared + # so that we can build a mostly statically link exe that can + # be downloaded and used right away. This is required for OS X and + # will, hopefully, make a static binary that is compatible with + # many different versions of Linux. + AS_MKDIR_P(src/static-libs) + rm -f src/static-libs/*.a + for libflag in $ALL_LDFLAGS; do + case $libflag in + -Lstatic-libs) + ;; + -L*) + libdir=`echo $libflag | sed -e 's/-L//'` + for slib in $static_lib_list; do + if test -e "$libdir/$slib" -a ! -e "src/static-libs/$slib"; then + ln -sf "$libdir/$slib" src/static-libs/. + fi + done + ;; + esac + done + + for slib in $static_lib_list; do + AC_MSG_CHECKING(for static library $slib) + if test -e "src/static-libs/$slib"; then + found_slib=`readlink src/static-libs/$slib` + AC_MSG_RESULT($found_slib) + else + AC_MSG_RESULT(not found) + fi + done +fi +AC_SUBST(STATIC_LDFLAGS) + +AS_CASE(["$host_os"], + [darwin*], + [], + [ + curses_lib=$(echo $CURSES_LIB | sed -e 's/-l//') + AS_IF([test $? -eq 0], + [ + AS_CASE(["$curses_lib"], + [ncurses*], + [AS_VAR_SET_IF(HAVE_GPM, [], + [ + AC_MSG_NOTICE([Checking for libgpm dependency]) + AS_VAR_SET(saved_LDFLAGS, $LDFLAGS) + AS_VAR_SET(LDFLAGS, "$STATIC_LDFLAGS $LDFLAGS") + AS_VAR_SET(saved_LIBS, $LIBS) + AC_CHECK_LIB($curses_lib, mousemask, + [ + AS_VAR_SET(LDFLAGS, $saved_LDFLAGS) + AS_VAR_SET(LIBS, $saved_LIBS) + ], + AC_MSG_ERROR([libgpm development libraries are required to build]))dnl + ])dnl + ]) + ], + [ + AC_MSG_WARN([Unable to test for dependepncy on gpm.]) + AC_MSG_WARN([If build fails during make consider installing libgpm development libraries.]) + ])dnl + ]dnl +) + +saved_location=$(pwd) +cd $srcdir +version=$(expr $(git describe --abbrev=7 --dirty --always --tags 2>/dev/null) : 'v\([[0-9]]*\.[[0-9]]*\.[[0-9]]*.*\)' 2>/dev/null) +cd $saved_location +AS_IF([test $? -eq 0], + [version=$(echo $version | tr -d '\n') + version=${version:-${PACKAGE_VERSION}} + AC_DEFINE_UNQUOTED([VCS_PACKAGE_STRING], ["$PACKAGE_NAME $version"], + [VCS package string])], + AC_DEFINE_UNQUOTED([VCS_PACKAGE_STRING], ["$PACKAGE_STRING"], [VCS package string])) + +AM_CONDITIONAL(USE_INCLUDED_YAJL, test $HAVE_LOCAL_YAJL -eq 0) +AM_CONDITIONAL(HAVE_LIBCURL, test x"$LIBCURL" != x"") +AM_CONDITIONAL([DISABLE_DOCUMENTATION], [ test x"$cross_compiling" != x"no" ]) + +USER_CXXFLAGS="${CXXFLAGS}" +AC_SUBST(USER_CXXFLAGS) + +AC_CONFIG_HEADERS([src/config.h]) +AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([TESTS_ENVIRONMENT]) +AC_CONFIG_FILES([tools/Makefile]) +AC_CONFIG_FILES([src/Makefile]) +AC_CONFIG_FILES([src/base/Makefile]) +AC_CONFIG_FILES([src/formats/logfmt/Makefile]) +AC_CONFIG_FILES([src/fmtlib/Makefile]) +AC_CONFIG_FILES([src/pcrepp/Makefile]) +AC_CONFIG_FILES([src/pugixml/Makefile]) +AC_CONFIG_FILES([src/tailer/Makefile]) +AC_CONFIG_FILES([src/yajl/Makefile]) +AC_CONFIG_FILES([src/yajlpp/Makefile]) +AC_CONFIG_FILES([src/third-party/base64/lib/Makefile]) +AC_CONFIG_FILES([src/third-party/scnlib/src/Makefile]) +AC_CONFIG_FILES([test/Makefile]) + +AC_OUTPUT |