mirror of
https://git.openafs.org/openafs.git
synced 2025-01-18 15:00:12 +00:00
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. Change-Id: If0a584377652a573dd1846eae30d42697af398d0 Reviewed-on: https://gerrit.openafs.org/12680 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
This commit is contained in:
parent
c7c71d2429
commit
88cb536f99
7
INSTALL
7
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.
|
||||
|
@ -79,4 +79,5 @@ OPENAFS_C_STRUCT_LABEL_CHECK
|
||||
OPENAFS_DIRENT_CHECKS
|
||||
OPENAFS_SYS_RESOURCE_CHECKS
|
||||
OPENAFS_UUID_CHECKS
|
||||
OPENAFS_CTF_TOOLS_CHECKS
|
||||
])
|
||||
|
30
src/cf/ctf-tools.m4
Normal file
30
src/cf/ctf-tools.m4
Normal file
@ -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])
|
||||
])
|
@ -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 <<EOF
|
||||
***************************************************************
|
||||
@ -62,6 +65,7 @@ OpenAFS configure summary
|
||||
debug:
|
||||
userspace : ${enable_debug}
|
||||
kernel : ${enable_debug_kernel}
|
||||
ctf-tools : ${summary_ctf_tools}
|
||||
options:
|
||||
transarc paths : ${enable_transarc_paths}
|
||||
namei fileserver : ${openafs_cv_summary_check_namei}
|
||||
|
@ -51,6 +51,8 @@ FSINCLUDES = @FSINCLUDES@
|
||||
GENCAT = @GENCAT@
|
||||
INCLUDE_LIBINTL = @INCLUDE_libintl@
|
||||
KERN_DBG = @KERN_DBG@
|
||||
CTFCONVERT = @CTFCONVERT@
|
||||
CTFMERGE = @CTFMERGE@
|
||||
KERN_OPTMZ = @KERN_OPTMZ@
|
||||
LD = @LD@
|
||||
LDFLAGS_roken = @LDFLAGS_roken@
|
||||
@ -316,3 +318,33 @@ LT_CLEAN=$(RM) -rf .lwp .libs *.la *.lo
|
||||
AFS_LDRULE =$(RUN_LD) $(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
|
||||
AFS_LDRULE_NOQ =$(RUN_LD_NOQ) $(CC) $(AFS_LDFLAGS) $(AFS_CFLAGS) $(LDFLAGS_$(@)) -o $@
|
||||
|
||||
RUN_CTFCONVERT=@RUN_CTFCONVERT() { \
|
||||
CTFLABEL=$$1 ; \
|
||||
CTFDBG=$$2 ; \
|
||||
shift ; shift ; \
|
||||
if test "x$${CTFDBG}" = "x" ; then exit 0; fi; \
|
||||
if test "x${CTFCONVERT}" = "x" ; then exit 0; fi; \
|
||||
if test "x${CTFMERGE}" = "x" ; then \
|
||||
echo "refusing to run ctfconvert; missing ctfmerge"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
for t in $$@ ; do \
|
||||
echo "${CTFCONVERT} -g -l $${CTFLABEL} $$t"; \
|
||||
${CTFCONVERT} -g -l $${CTFLABEL} $$t; \
|
||||
done ; \
|
||||
} ; RUN_CTFCONVERT
|
||||
|
||||
RUN_CTFMERGE=@RUN_CTFMERGE () { \
|
||||
CTFLABEL=$$1 ; \
|
||||
CTFDBG=$$2 ; \
|
||||
shift ; shift ; \
|
||||
if test "x$${CTFDBG}" = "x" ; then exit 0; fi; \
|
||||
if test "x${CTFMERGE}" = "x" ; then exit 0; fi; \
|
||||
if test "x${CTFCONVERT}" = "x" ; then \
|
||||
echo "refusing to run ctfmerge; missing ctfconvert"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
echo "$(CTFMERGE) -g -l $${CTFLABEL} -o $$@"; \
|
||||
$(CTFMERGE) -g -l $${CTFLABEL} -o $$@; \
|
||||
} ; RUN_CTFMERGE
|
||||
|
||||
|
@ -146,9 +146,13 @@ dest_libafs: $(LIBAFS) $(LIBAFSNONFS)
|
||||
|
||||
${LIBAFS}: $(AFSAOBJS) $(AFSNFSOBJS)
|
||||
$(RM) -f $@
|
||||
$(RUN_CTFCONVERT) libafs "${KERN_DBG}" ${AFSAOBJS} ${AFSNFSOBJS}
|
||||
$(LD) $(LDFLAGS) -o $@ $(AFSAOBJS) ${AFSNFSOBJS}
|
||||
$(RUN_CTFMERGE) libafs "${KERN_DBG}" $@ $(AFSAOBJS) ${AFSNFSOBJS}
|
||||
|
||||
${LIBAFSNONFS}: $(AFSAOBJS) $(AFSNONFSOBJS)
|
||||
$(RM) -f $@
|
||||
$(RUN_CTFCONVERT) libafs "${KERN_DBG}" ${AFSAOBJS} ${AFSNONFSOBJS}
|
||||
$(LD) $(LDFLAGS) -o $@ $(AFSAOBJS) ${AFSNONFSOBJS}
|
||||
$(RUN_CTFMERGE) libafs "${KERN_DBG}" $@ $(AFSAOBJS) ${AFSNONFSOBJS}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user