dnl ---------------------------------------------------------------------------
dnl Support macros for makefiles generated with Bakefile presets
dnl ---------------------------------------------------------------------------


dnl ---------------------------------------------------------------------------
dnl AM_YESNO_OPTCHECK([name of the boolean variable to set],
dnl                   [name of the variable with yes/no values],
dnl                   [name of the --enable/--with option])
dnl
dnl Converts the $3 variable, supposed to contain a yes/no value to a 1/0
dnl boolean variable and saves the result into $1.
dnl Outputs also the standard checking-option message.
dnl Used by the m4 macros of the presets.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_YESNO_OPTCHECK],
[
    AC_MSG_CHECKING([for the $3 option])
    if [[ "x$$2" = "xyes" ]]; then
        AC_MSG_RESULT([yes])
        $1=1
    else
        AC_MSG_RESULT([no])
        $1=0
    fi
])

dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_UNICODEOPT([default value for the --enable-unicode option])
dnl
dnl Adds the --enable-unicode option to the configure script and sets the
dnl UNICODE=0/1 variable accordingly to the value of the option.
dnl To be used with unicodeopt.bkl preset.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_UNICODEOPT],
[
    default="$1"
    if [[ -z "$default" ]]; then
        default="no"
    fi

    AC_ARG_ENABLE([unicode],
            AC_HELP_STRING([--enable-unicode], [Builds in Unicode mode]),
            [], [enableval="$default"])

    AC_BAKEFILE_YESNO_OPTCHECK([UNICODE], [enableval], [--enable-unicode])
])

dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_DEBUGOPT([default value for the --enable-debug option])
dnl
dnl Adds the --enable-debug option to the configure script and sets the
dnl DEBUG=0/1 variable accordingly to the value of the option.
dnl To be used with debugopt.bkl preset.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_DEBUGOPT],
[
    default="$1"
    if [[ -z "$default" ]]; then
        default="no"
    fi

    AC_ARG_ENABLE([debug],
            AC_HELP_STRING([--enable-debug], [Builds in debug mode]),
            [], [enableval="$default"])

    AC_BAKEFILE_YESNO_OPTCHECK([DEBUG], [enableval], [--enable-debug])

    dnl add the optimize/debug flags
    if [[ "x$DEBUG" = "x1" ]]; then

        dnl NOTE: the -Wundef and -Wno-ctor-dtor-privacy are not enabled automatically by -Wall
        dnl NOTE2: the '-Wno-ctor-dtor-privacy' has sense only when compiling C++ source files
        dnl        and thus we must be careful to add it only to CXXFLAGS and not to CFLAGS
        dnl        (remember that CPPFLAGS is reserved for both C and C++ compilers while
        dnl         CFLAGS is intended as flags for C compiler only and CXXFLAGS for C++ only)
        CXXFLAGS="$CXXFLAGS -g -O0 -Wall -Wundef -Wno-ctor-dtor-privacy"
        CFLAGS="$CFLAGS -g -O0 -Wall -Wundef"
    else
        CXXFLAGS="$CXXFLAGS -O2"
        CFLAGS="$CFLAGS -O2"
    fi
])

dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_SHAREDOPT([default value for the --enable-shared option])
dnl
dnl Adds the --enable-shared option to the configure script and sets the
dnl SHARED=0/1 variable accordingly to the value of the option.
dnl To be used with sharedopt.bkl preset.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_SHAREDOPT],
[
    default="$1"
    if [[ -z "$default" ]]; then
        default="no"
    fi

    AC_ARG_ENABLE([shared],
            AC_HELP_STRING([--enable-shared], [Builds in shared mode]),
            [], [enableval="$default"])

    AC_BAKEFILE_YESNO_OPTCHECK([SHARED], [enableval], [--enable-shared])
])

dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_SHOW_DEBUGOPT
dnl
dnl Prints a message on stdout about the value of the DEBUG variable.
dnl This macro is useful to show summary messages at the end of the configure scripts.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_SHOW_DEBUGOPT],
[
    if [[ "$DEBUG" = "1" ]]; then
        echo "  - DEBUG build"
    else
        echo "  - RELEASE build"
    fi
])

dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_SHOW_SHAREDOPT
dnl
dnl Prints a message on stdout about the value of the SHARED variable.
dnl This macro is useful to show summary messages at the end of the configure scripts.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_SHOW_SHAREDOPT],
[
    if [[ "$SHARED" = "1" ]]; then
        echo "  - SHARED mode"
    else
        echo "  - STATIC mode"
    fi
])

dnl ---------------------------------------------------------------------------
dnl AC_BAKEFILE_SHOW_UNICODEOPT
dnl
dnl Prints a message on stdout about the value of the UNICODE variable.
dnl This macro is useful to show summary messages at the end of the configure scripts.
dnl ---------------------------------------------------------------------------
AC_DEFUN([AC_BAKEFILE_SHOW_UNICODEOPT],
[
    if [[ "$UNICODE" = "1" ]]; then
        echo "  - UNICODE mode"
    else
        echo "  - ANSI mode"
    fi
])

 	  	 
