SUBDIRS="include common client server doc"

option()
{
    if [ "$MK_DEBUG" = yes ]
    then
        _watchdog_default="no"
    else
        _watchdog_default="yes"
    fi

    mk_option \
        OPTION=lwsm-watchdog-default \
        VAR=LWSM_WATCHDOG_DEFAULT \
        PARAM="yes|no" \
        DEFAULT="$_watchdog_default" \
        HELP="Enable or disable watchdog by default"
}

configure()
{
    mk_config_header "include/config.h"

    MK_CPPFLAGS="$MK_CPPFLAGS -DLWSM_DISABLE_DEPRECATED -DLWSM_BUILD"
    MK_CFLAGS="$MK_CFLAGS -Wall -Werror -Wmissing-prototypes"

    lw_define_feature_macros

    mk_define SBINDIR "\"$MK_SBINDIR\""
    mk_define CACHEDIR "\"$LW_CACHEDIR\""
    mk_define LIBDIR "\"$MK_LIBDIR\""
    mk_define LOADERDIR "\"$MK_LIBDIR/lwsm-loader\""
    mk_define MOD_EXT "\"$MK_DLO_EXT\""
    mk_define TOP_SRCDIR "\"$MK_SOURCE_DIR\""
    mk_define TOP_OBJDIR "\"$MK_OBJECT_DIR\""

    mk_declare -o MOD_EXT="$MK_DLO_EXT"

    # Check endianness
    mk_multiarch_do
        lw_check_isa
        lw_check_endian
    mk_multiarch_done

    # Required headers
    mk_check_headers \
        FAIL=yes \
        lwmsg/lwmsg.h lwadvapi.h lw/base.h

    # Optional headers
    mk_check_headers \
        pthread.h strings.h eventlog.h

    # Required libraries
    mk_check_libraries \
        FAIL=yes \
        lwmsg lwadvapi lwbase regclient lwioclient uuid

    # Optional libraries
    mk_check_libraries \
        pthread dl eventlog

    lw_check_pthread_once_init

    mk_check_doxygen

    if [ "$LWSM_WATCHDOG_DEFAULT" = yes ]
    then
        LWSM_WATCHDOG_DEFAULT=dword:00000001
    else
        LWSM_WATCHDOG_DEFAULT=dword:00000000
    fi

    mk_declare -o ENABLE_INTERNAL_DOCS=no LWSM_WATCHDOG_DEFAULT

    mk_output_file server/lwsm.reg
    mk_output_file doc/Doxyfile
}
