# Initialization
AC_PREREQ([2.69])
AC_INIT([sdeventplus], [0.1], [https://github.com/openbmc/sdeventplus/issues])
AC_LANG([C++])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIRS([m4])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([foreign subdir-objects -Wall -Werror dist-xz tar-ustar])
AM_SILENT_RULES([yes])

# Make sure the default CFLAGS of `-O2 -g` don't override CODE_COVERAGE_CFLAGS
# It is important that this comes before AC_PROG_C{C,XX}, as we are attempting
# to stop them from populating default CFLAGS and CXXFLAGS.
AS_IF([test "x$enable_code_coverage" != "xno"], [
    AS_IF([test "x${CXXFLAGS+set}" != "xset"], [
        AC_SUBST(CXXFLAGS, [""])
    ])
    AS_IF([test "x${CFLAGS+set}" != "xset"], [
        AC_SUBST(CFLAGS, [""])
    ])
])

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AM_PROG_AR
AC_PROG_INSTALL
AC_PROG_MAKE_SET

# Checks for libtool
LT_INIT # Removes 'unrecognized options: --with-libtool-sysroot'

# Make sure the pkgconfigdata is configured for automake
PKG_INSTALLDIR

# Checks for typedefs, structures, and compiler characteristics.
AX_CXX_COMPILE_STDCXX([14], [noext], [mandatory])
AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wpedantic], [CFLAGS])
AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wpedantic], [CXXFLAGS])

# We require systemd unconditionally
AX_PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 218])

AX_SAVE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS])
AX_APPEND_COMPILE_FLAGS([$SYSTEMD_CFLAGS], [CPPFLAGS])
AC_CHECK_HEADERS([systemd/sd-event.h], [],
    [AC_MSG_ERROR([Could not find systemd/sd-event.h])])
AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS])

AX_SAVE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS])
AX_APPEND_COMPILE_FLAGS([$SYSTEMD_LIBS], [LDFLAGS])
AC_CHECK_LIB([systemd], [sd_event_default], [], [
    AC_MSG_ERROR([Could not find sd_event_default in libsystemd])
])
AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS])

# Make it possible for users to choose to disable examples
AC_ARG_ENABLE([examples], AC_HELP_STRING([--disable-examples],
                                         [Build example programs]))
AM_CONDITIONAL([BUILD_EXAMPLES], [test "x$enable_examples" != "xno"])

# Make it possible for users to choose if they want test support
# explicitly or not at all
AC_ARG_ENABLE([tests], AC_HELP_STRING([--disable-tests],
                                      [Build test cases]))

# Check/set gtest specific functions.
AS_IF([test "x$enable_tests" != "xno"], [
    PKG_CHECK_MODULES([GTEST], [gtest], [], [true])
    PKG_CHECK_MODULES([GMOCK], [gmock], [], [true])
    AX_PTHREAD

    AX_SAVE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS])
    AX_APPEND_COMPILE_FLAGS([$GTEST_CFLAGS], [CPPFLAGS])
    AC_LANG_PUSH([C++])
    AC_CHECK_HEADERS([gtest/gtest.h], [
        AS_IF([test "x$GTEST_CFLAGS" = "x"], [
            AS_IF([test "x$PTHREAD_CFLAGS" = "x"], [
                AX_APPEND_COMPILE_FLAGS(["-DGTEST_HAS_PTHREAD=0"], [GTEST_CFLAGS])
            ], [
                AX_APPEND_COMPILE_FLAGS(["-DGTEST_HAS_PTHREAD=1"], [GTEST_CFLAGS])
                AX_APPEND_COMPILE_FLAGS([$PTHREAD_CFLAGS], [GTEST_CFLAGS])
            ])
        ])
    ], [
        AS_IF([test "x$enable_tests" = "xyes"], [
            AC_MSG_ERROR([Testing enabled but could not find gtest/gtest.h])
        ])
    ])
    AC_LANG_POP([C++])
    AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS])

    AX_SAVE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS])
    AX_APPEND_COMPILE_FLAGS([$GMOCK_CFLAGS], [CPPFLAGS])
    AC_LANG_PUSH([C++])
    AC_CHECK_HEADERS([gmock/gmock.h], [], [
        AS_IF([test "x$enable_tests" = "xyes"], [
            AC_MSG_ERROR([Testing enabled but could not find gmock/gmock.h])
        ])
    ])
    AC_LANG_POP([C++])
    AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [CPPFLAGS])

    AX_SAVE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS])
    AX_APPEND_COMPILE_FLAGS([$GTEST_LIBS], [LDFLAGS])
    AC_CHECK_LIB([gtest], [main], [
        AS_IF([test "x$GTEST_LIBS" = "x"], [
            AX_APPEND_COMPILE_FLAGS([-lgtest], [GTEST_LIBS])
        ])
    ], [
        AS_IF([test "x$enable_tests" = "xyes"], [
            AC_MSG_ERROR([Testing enabled but couldn't find gtest libs])
        ])
    ])
    AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS])

    AX_SAVE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS])
    AX_APPEND_COMPILE_FLAGS([$GMOCK_LIBS], [LDFLAGS])
    AC_CHECK_LIB([gmock], [main], [
        AS_IF([test "x$GMOCK_LIBS" = "x"], [
            AX_APPEND_COMPILE_FLAGS([-lgmock], [GMOCK_LIBS])
        ])
    ], [
        AS_IF([test "x$enable_tests" = "xyes"], [
            AC_MSG_ERROR([Testing enabled but couldn't find gmock libs])
        ])
    ])
    AX_RESTORE_FLAGS_WITH_PREFIX(OLD, [LDFLAGS])
])

# Check for valgrind
AS_IF([test "x$enable_tests" != "xno"], [
    m4_foreach([vgtool], [valgrind_tool_list],
        [AX_VALGRIND_DFLT(vgtool, [off])])
    AX_VALGRIND_DFLT([memcheck], [on])
    AX_VALGRIND_CHECK
    AM_EXTRA_RECURSIVE_TARGETS([check-valgrind])
    m4_foreach([vgtool], [valgrind_tool_list],
        [AM_EXTRA_RECURSIVE_TARGETS([check-valgrind-]vgtool)])
])

# Code coverage
AS_IF([test "x$enable_tests" != "xno"], [
    AX_CODE_COVERAGE
    AM_EXTRA_RECURSIVE_TARGETS([check-code-coverage])
])

# Append -Werror after doing autoconf compiler checks
# Otherwise some perfectly valid checks can fail and cause our
# final configuratin to be broken.
AC_ARG_ENABLE([werror], AC_HELP_STRING([--disable-werror], [Whether to automatically add -Werror CFLAGS]))
AS_IF([test "x$enable_tests" != "xno"], [
    AX_APPEND_COMPILE_FLAGS([-Werror], [CFLAGS])
    AX_APPEND_COMPILE_FLAGS([-Werror], [CXXFLAGS])
])

# Create configured output
AC_CONFIG_FILES([Makefile example/Makefile src/Makefile test/Makefile])
AC_CONFIG_FILES([src/sdeventplus.pc])
AC_OUTPUT
