diff options
Diffstat (limited to 'rt/m4/rt_layout.m4')
-rw-r--r-- | rt/m4/rt_layout.m4 | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/rt/m4/rt_layout.m4 b/rt/m4/rt_layout.m4 new file mode 100644 index 000000000..393b32175 --- /dev/null +++ b/rt/m4/rt_layout.m4 @@ -0,0 +1,74 @@ +dnl +dnl @synopsis RT_LAYOUT(configlayout, layoutname) +dnl +dnl This macro reads an Apache-style layout file (specified as the +dnl configlayout parameter), and searches for a specific layout +dnl (named using the layoutname parameter). +dnl +dnl The entries for a given layout are then inserted into the +dnl environment such that they become available as substitution +dnl variables. In addition, the rt_layout_name variable is set +dnl (but not exported) if the layout is valid. +dnl +dnl This code is heavily borrowed *cough* from the Apache 2 codebase. +dnl + +AC_DEFUN([RT_LAYOUT],[ + if test ! -f $srcdir/config.layout; then + AC_MSG_WARN([Layout file $srcdir/config.layout not found]) + rt_layout_name=no + else + pldconf=./config.pld + $PERL -0777 -p -e "\$layout = '$2';" -e ' + s/.*<Layout\s+$layout>//gims; + s/\<\/Layout\>.*//s; + s/^#.*$//m; + s/^\s+//gim; + s/\s+$/\n/gim; + s/\+$/\/rt3/gim; + # m4 will not let us just use $1, we need @S|@1 + s/^\s*((?:bin|sbin|libexec|data|sysconf|sharedstate|localstate|lib|include|oldinclude|info|man)dir)\s*:\s*(.*)$/@S|@1=@S|@2/gim; + s/^\s*(.*?)\s*:\s*(.*)$/\(test "x\@S|@@S|@1" = "xNONE" || test "x\@S|@@S|@1" = "x") && @S|@1=@S|@2/gim; + ' < $1 > $pldconf + + if test -s $pldconf; then + rt_layout_name=$2 + . $pldconf + changequote({,}) + for var in prefix exec_prefix bindir sbindir \ + sysconfdir mandir libdir datadir htmldir \ + localstatedir logfiledir masonstatedir \ + sessionstatedir customdir custometcdir customhtmldir \ + customlexdir customlibdir manualdir; do + eval "val=\"\$$var\"" + val=`echo $val | sed -e 's:\(.\)/*$:\1:'` + val=`echo $val | + sed -e 's:[\$]\([a-z_]*\):${\1}:g'` + eval "$var='$val'" + done + changequote([,]) + else + rt_layout_name=no + fi + #rm $pldconf + fi + RT_SUBST_EXPANDED_ARG(prefix) + RT_SUBST_EXPANDED_ARG(exec_prefix) + RT_SUBST_EXPANDED_ARG(bindir) + RT_SUBST_EXPANDED_ARG(sbindir) + RT_SUBST_EXPANDED_ARG(sysconfdir) + RT_SUBST_EXPANDED_ARG(mandir) + RT_SUBST_EXPANDED_ARG(libdir) + RT_SUBST_EXPANDED_ARG(datadir) + RT_SUBST_EXPANDED_ARG(htmldir) + RT_SUBST_EXPANDED_ARG(manualdir) + RT_SUBST_EXPANDED_ARG(localstatedir) + RT_SUBST_EXPANDED_ARG(logfiledir) + RT_SUBST_EXPANDED_ARG(masonstatedir) + RT_SUBST_EXPANDED_ARG(sessionstatedir) + RT_SUBST_EXPANDED_ARG(customdir) + RT_SUBST_EXPANDED_ARG(custometcdir) + RT_SUBST_EXPANDED_ARG(customhtmldir) + RT_SUBST_EXPANDED_ARG(customlexdir) + RT_SUBST_EXPANDED_ARG(customlibdir) +])dnl |