From 1e3c16c72fbd820eab3a07a2196c0bc8f25288d3 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Sat, 23 Apr 2016 15:43:15 -0400 Subject: [PATCH] Add configure report MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- configure.ac | 49 ++++++++++++++ m4/pprint.m4 | 184 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 m4/pprint.m4 diff --git a/configure.ac b/configure.ac index 55c1ab38..eec5f354 100644 --- a/configure.ac +++ b/configure.ac @@ -308,3 +308,52 @@ AC_CONFIG_FILES([tests/bin/test_intersection], [chmod +x tests/bin/test_intersec AC_CONFIG_FILES([tests/bin/test_packet_seq_num], [chmod +x tests/bin/test_packet_seq_num]) AC_OUTPUT + +# +# Mini-report on what will be built. +# + +PPRINT_INIT +PPRINT_SET_INDENT(1) +PPRINT_SET_TS(38) + +AS_ECHO +AS_ECHO("${PPRINT_COLOR_BLDBLU}Babeltrace $PACKAGE_VERSION$PPRINT_COLOR_RST") +AS_ECHO + +PPRINT_SUBTITLE([Features]) + +# Target architecture we're building for. +target_arch=$host_cpu +[ +for f in $CFLAGS; do + if test $f = "-m32"; then + target_arch="32-bit" + elif test $f = "-m64"; then + target_arch="64-bit" + fi +done +] +PPRINT_PROP_STRING([Target architecture], $target_arch) + +# python bindings enabled/disabled +test "x$enable_python" = "xyes" && value=1 || value=0 +PPRINT_PROP_BOOL([Python bindings], $value) + +# python bindings doc enabled/disabled +test "x$enable_python_bindings_doc" = "xyes" && value=1 || value=0 +PPRINT_PROP_BOOL([Python bindings doc], $value) + +# debug-info enabled/disabled +test "x$enable_debuginfo" = "xyes" && value=1 || value=0 +PPRINT_PROP_BOOL([Debug information output], $value) + + +report_bindir="`eval eval echo $bindir`" +report_libdir="`eval eval echo $libdir`" + +# Print the bindir and libdir this `make install' will install into. +AS_ECHO +PPRINT_SUBTITLE([Install directories]) +PPRINT_PROP_STRING([Binaries], [$report_bindir]) +PPRINT_PROP_STRING([Libraries], [$report_libdir]) diff --git a/m4/pprint.m4 b/m4/pprint.m4 new file mode 100644 index 00000000..182810c3 --- /dev/null +++ b/m4/pprint.m4 @@ -0,0 +1,184 @@ +# Pretty printing macros. +# +# Author: Philippe Proulx + +# PPRINT_INIT(): initializes the pretty printing system. +# +# Use this macro before using any other PPRINT_* macro. +AC_DEFUN([PPRINT_INIT], [ + m4_define([PPRINT_CONFIG_TS], 50) + m4_define([PPRINT_CONFIG_INDENT], 2) + PPRINT_YES_MSG=yes + PPRINT_NO_MSG=no + + # find tput, which tells us if colors are supported and gives us color codes + AC_PATH_PROG(pprint_tput, tput) + + AS_IF([test -n "$pprint_tput"], [ + AS_IF([test -n "$PS1" && test `"$pprint_tput" colors` -ge 8 && test -t 1], [ + # interactive shell and colors supported and standard output + # file descriptor is opened on a terminal + PPRINT_COLOR_TXTBLK=`"$pprint_tput" setf 0` + PPRINT_COLOR_TXTBLU=`"$pprint_tput" setf 1` + PPRINT_COLOR_TXTGRN=`"$pprint_tput" setf 2` + PPRINT_COLOR_TXTCYN=`"$pprint_tput" setf 3` + PPRINT_COLOR_TXTRED=`"$pprint_tput" setf 4` + PPRINT_COLOR_TXTPUR=`"$pprint_tput" setf 5` + PPRINT_COLOR_TXTYLW=`"$pprint_tput" setf 6` + PPRINT_COLOR_TXTWHT=`"$pprint_tput" setf 7` + PPRINT_COLOR_BLD=`"$pprint_tput" bold` + PPRINT_COLOR_BLDBLK=$PPRINT_COLOR_BLD$PPRINT_COLOR_TXTBLK + PPRINT_COLOR_BLDBLU=$PPRINT_COLOR_BLD$PPRINT_COLOR_TXTBLU + PPRINT_COLOR_BLDGRN=$PPRINT_COLOR_BLD$PPRINT_COLOR_TXTGRN + PPRINT_COLOR_BLDCYN=$PPRINT_COLOR_BLD$PPRINT_COLOR_TXTCYN + PPRINT_COLOR_BLDRED=$PPRINT_COLOR_BLD$PPRINT_COLOR_TXTRED + PPRINT_COLOR_BLDPUR=$PPRINT_COLOR_BLD$PPRINT_COLOR_TXTPUR + PPRINT_COLOR_BLDYLW=$PPRINT_COLOR_BLD$PPRINT_COLOR_TXTYLW + PPRINT_COLOR_BLDWHT=$PPRINT_COLOR_BLD$PPRINT_COLOR_TXTWHT + PPRINT_COLOR_RST=`"$pprint_tput" sgr0` + + # colored yes and no + PPRINT_YES_MSG="$PPRINT_COLOR_BLDGRN$PPRINT_YES_MSG$PPRINT_COLOR_RST" + PPRINT_NO_MSG="$PPRINT_COLOR_BLDRED$PPRINT_NO_MSG$PPRINT_COLOR_RST" + + # subtitle color + PPRINT_COLOR_SUBTITLE=$PPRINT_COLOR_BLDCYN + ]) + ]) +]) + +# PPRINT_SET_INDENT(indent): sets the current indentation. +# +# Use PPRINT_INIT() before using this macro. +AC_DEFUN([PPRINT_SET_INDENT], [ + m4_define([PPRINT_CONFIG_INDENT], $1) +]) + +# PPRINT_SET_TS(ts): sets the current tab stop. +# +# Use PPRINT_INIT() before using this macro. +AC_DEFUN([PPRINT_SET_TS], [ + m4_define([PPRINT_CONFIG_TS], $1) +]) + +# PPRINT_SUBTITLE(subtitle): pretty prints a subtitle. +# +# The subtitle is put as is in a double-quoted shell string so the user +# needs to escape ". +# +# Use PPRINT_INIT() before using this macro. +AC_DEFUN([PPRINT_SUBTITLE], [ + AS_ECHO("${PPRINT_COLOR_SUBTITLE}$1$PPRINT_COLOR_RST") +]) + +AC_DEFUN([_PPRINT_INDENT], [ + m4_if(PPRINT_CONFIG_INDENT, 0, [ + ], [ + m4_for([pprint_i], 0, m4_eval(PPRINT_CONFIG_INDENT * 2 - 1), 1, [ + AS_ECHO_N(" ") + ]) + ]) +]) + +# PPRINT_PROP_STRING(title, value, title_color?): pretty prints a +# string property. +# +# The title is put as is in a double-quoted shell string so the user +# needs to escape ". +# +# The $PPRINT_CONFIG_INDENT variable must be set to the desired indentation +# level. +# +# Use PPRINT_INIT() before using this macro. +AC_DEFUN([PPRINT_PROP_STRING], [ + m4_pushdef([pprint_title], [$1]) + m4_pushdef([pprint_value], [$2]) + + m4_if([$#], 3, [ + m4_pushdef([pprint_title_color], [$3]) + ], [ + m4_pushdef([pprint_title_color], []) + ]) + + m4_pushdef([pprint_title_len], m4_len(pprint_title)) + m4_pushdef([pprint_spaces_cnt], m4_eval(PPRINT_CONFIG_TS - pprint_title_len - (PPRINT_CONFIG_INDENT * 2) - 1)) + + m4_if(m4_eval(pprint_spaces_cnt <= 0), 1, [ + m4_define([pprint_spaces_cnt], 1) + ]) + + m4_pushdef([pprint_spaces], []) + + m4_for([pprint_i], 0, m4_eval(pprint_spaces_cnt - 1), 1, [ + m4_append([pprint_spaces], [ ]) + ]) + + _PPRINT_INDENT + + AS_ECHO_N("pprint_title_color""pprint_title$PPRINT_COLOR_RST:pprint_spaces") + AS_ECHO("${PPRINT_COLOR_BLD}pprint_value$PPRINT_COLOR_RST") + + m4_popdef([pprint_spaces]) + m4_popdef([pprint_spaces_cnt]) + m4_popdef([pprint_title_len]) + m4_popdef([pprint_title_color]) + m4_popdef([pprint_value]) + m4_popdef([pprint_title]) +]) + +# PPRINT_PROP_BOOL(title, value, title_color?): pretty prints a boolean +# property. +# +# The title is put as is in a double-quoted shell string so the user +# needs to escape ". +# +# The value is evaluated at shell runtime. Its evaluation must be +# 0 (false) or 1 (true). +# +# Uses the PPRINT_PROP_STRING() with the "yes" or "no" string. +# +# Use PPRINT_INIT() before using this macro. +AC_DEFUN([PPRINT_PROP_BOOL], [ + m4_pushdef([pprint_title], [$1]) + m4_pushdef([pprint_value], [$2]) + + test pprint_value -eq 0 && pprint_msg="$PPRINT_NO_MSG" || pprint_msg="$PPRINT_YES_MSG" + + m4_if([$#], 3, [ + PPRINT_PROP_STRING(pprint_title, $pprint_msg, $3) + ], [ + PPRINT_PROP_STRING(pprint_title, $pprint_msg) + ]) + + m4_popdef([pprint_value]) + m4_popdef([pprint_title]) +]) + +# PPRINT_WARN(msg): pretty prints a warning message. +# +# The message is put as is in a double-quoted shell string so the user +# needs to escape ". +# +# Use PPRINT_INIT() before using this macro. +AC_DEFUN([PPRINT_WARN], [ + m4_pushdef([pprint_msg], [$1]) + + _PPRINT_INDENT + AS_ECHO("${PPRINT_COLOR_TXTYLW}WARNING:$PPRINT_COLOR_RST ${PPRINT_COLOR_BLDYLW}pprint_msg$PPRINT_COLOR_RST") + + m4_popdef([pprint_msg]) +]) + +# PPRINT_ERROR(msg): pretty prints an error message and exits. +# +# The message is put as is in a double-quoted shell string so the user +# needs to escape ". +# +# Use PPRINT_INIT() before using this macro. +AC_DEFUN([PPRINT_ERROR], [ + m4_pushdef([pprint_msg], [$1]) + + AC_MSG_ERROR(${PPRINT_COLOR_BLDRED}pprint_msg$PPRINT_COLOR_RST) + + m4_popdef([pprint_msg]) +]) -- 2.34.1