From 96ce04c78b5f745424165494c9b76d7ce227eeaa Mon Sep 17 00:00:00 2001 From: Marcio Barbosa Date: Mon, 5 Feb 2018 21:16:17 +0000 Subject: [PATCH] autoconf: detect ctf-tools and add ctf to libafs CTF is a reduced form of debug information similar to DWARF and stab. It describes types and function prototypes. The principal objective of the format is to shrink the data size as much as possible so that it could be included in a production environment. MDB, DTrace, and other tools use CTF debug information to read and display structures correctly. This commit introduces a new configure option called --with-ctf-tools. This option can be used to specify an alternative path where the tools can be found. If the path is not provided, the tools will be searched in a set of default directories (including $PATH). The CTF debugging information will only be included if the corresponding --enable-debug / --enable-debug-kernel is specified. Note: at the moment, the Solaris kernel module is the only module benefited by this commit. Reviewed-on: https://gerrit.openafs.org/12680 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk (cherry picked from commit 88cb536f99dc58fdbeb9fa6c47c26774241a0cb6) Change-Id: I174347370a83b31f68d2631c965e17d72b438cd1 Reviewed-on: https://gerrit.openafs.org/12902 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk --- INSTALL | 7 +++++++ acinclude.m4 | 1 + src/cf/ctf-tools.m4 | 30 +++++++++++++++++++++++++++ src/cf/summary.m4 | 4 ++++ src/config/Makefile.config.in | 32 +++++++++++++++++++++++++++++ src/libafs/MakefileProto.SOLARIS.in | 4 ++++ 6 files changed, 78 insertions(+) create mode 100644 src/cf/ctf-tools.m4 diff --git a/INSTALL b/INSTALL index 665e306fd..3d802a72d 100644 --- a/INSTALL +++ b/INSTALL @@ -499,6 +499,13 @@ I Other configure options xsltproc. By default, the user's path is searched for those programs in that order, and the first one found is used. + --with-ctf-tools[=DIR] + Location of ctfconvert and ctfmerge. Defaults to detect. These + tools create a reduced form of debug information that describes + types and function prototypes. This option is only relevant to + platforms that provide CTF tools and, at the moment, it is only + functional on Solaris (onbld package must be installed). + There are also some environment variables that you can set to control aspects of the build. They can be set either on the configure command line (preferred) or in the environment. diff --git a/acinclude.m4 b/acinclude.m4 index 91006174f..7b35bb122 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -79,4 +79,5 @@ OPENAFS_C_STRUCT_LABEL_CHECK OPENAFS_DIRENT_CHECKS OPENAFS_SYS_RESOURCE_CHECKS OPENAFS_UUID_CHECKS +OPENAFS_CTF_TOOLS_CHECKS ]) diff --git a/src/cf/ctf-tools.m4 b/src/cf/ctf-tools.m4 new file mode 100644 index 000000000..3880a88b8 --- /dev/null +++ b/src/cf/ctf-tools.m4 @@ -0,0 +1,30 @@ +AC_DEFUN([OPENAFS_CTF_TOOLS_CHECKS],[ + +CTF_DEFAULT_PATH="$PATH:/usr/bin:/opt/onbld/bin/$HOST_CPU" + +AC_ARG_WITH([ctf-tools], + AS_HELP_STRING([--with-ctf-tools@<:@=DIR@:>@], + [Location of the CTF tools]), + [CTF_TOOLS="$withval"], + [CTF_TOOLS="check"]) + +AS_CASE([$CTF_TOOLS], + [check], [AC_PATH_PROG([CTFCONVERT], [ctfconvert], [], [$CTF_DEFAULT_PATH]) + AC_PATH_PROG([CTFMERGE], [ctfmerge], [], [$CTF_DEFAULT_PATH])], + + [yes], [AC_PATH_PROG([CTFCONVERT], [ctfconvert], [], [$CTF_DEFAULT_PATH]) + AC_PATH_PROG([CTFMERGE], [ctfmerge], [], [$CTF_DEFAULT_PATH]) + AS_IF([test "x$CTFCONVERT" = "x"], [AC_ERROR("ctfconvert not found")]) + AS_IF([test "x$CTFMERGE" = "x"], [AC_ERROR("ctfmerge not found")])], + + [no], [], + + [AC_PATH_PROG([CTFCONVERT], [ctfconvert], [], [$CTF_TOOLS]) + AC_PATH_PROG([CTFMERGE], [ctfmerge], [], [$CTF_TOOLS]) + AS_IF([test "x$CTFCONVERT" = "x"], [AC_ERROR("ctfconvert not found")]) + AS_IF([test "x$CTFMERGE" = "x"], [AC_ERROR("ctfmerge not found")])] +) + +AC_ARG_VAR([CTFCONVERT], [Path to ctfconvert]) +AC_ARG_VAR([CTFMERGE], [Path to ctfmerge]) +]) diff --git a/src/cf/summary.m4 b/src/cf/summary.m4 index 0ac9fc028..1b969326b 100644 --- a/src/cf/summary.m4 +++ b/src/cf/summary.m4 @@ -51,6 +51,9 @@ AC_DEFUN([OPENAFS_SUMMARY],[ AS_IF([test "${summary_doxygen}" = "yes" -a "${HAVE_DOT}" = "yes"], [summary_doxygen_graphs="yes"], [summary_doxygen_graphs="no"]) + AS_IF([test "x$CTFCONVERT" != "x" -a "x$CTFMERGE" != "x"], + [summary_ctf_tools="yes"], + [summary_ctf_tools="no"]) cat <