for i in $files
do
fname=`echo $i | sed s/\.ad//`
+ orig=$i
ad_debug "Processing $i to be $fname"
ad_log " $i into $fname"
+ rm -f $fname
+
# Run the distribution processing for this file
- ad_process_file $i $fname false
- if test -f $fname; then
- cp -p $i $fname || exit 1
- fi
+ ad_process_file $orig $fname false
+ if test '!' -f "$fname"; then
+ cp -p $orig $fname || exit 1
+ fi
done
ad_log ""
\! -name \*\.[cC][pP][pP] -a \
\! -name \*\.[cC]++ -a \
\! -name \*\.m -a \
+ \! -name \*\.mm -a \
+ \! -name \*\.M -a \
+ \! -name \*\.S -a \
\! -name \*\.[hH] -a \
\! -name \*\.hh -a \
\! -name \*\.[cC]\.in -a \
{
ad_debug "Starting processing source files: $1"
- # We take only C/C++ files since they use the C compiler friendly
- # version of distdefs. Other files are not assumed to use them.
+ # We take only C/C++ (and other files that are run through traditional
+ # preprocessor) files since they use the C compiler friendly version
+ # of distdefs. Other files are not assumed to use them.
files=`find $am_distdir -type f \! -name \*\.ad \( \
-name \*\.[cC] -o \
-name \*\.[cC][cCpP] -o \
-name \*\.[cC][pP][pP] -o \
-name \*\.[cC]++ -o \
-name \*\.m -o \
+ -name \*\.mm -o \
+ -name \*\.M -o \
+ -name \*\.S -o \
-name \*\.[hH] -o \
-name \*\.hh -o \
-name \*\.[cC]\.in -o \
ad_fatal "Distribution '$1' is not declared"
fi
+ # Get and enforce prereq version
+ prereq=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
+ | grep "prereq " | cut -d' ' -f2- | sort | uniq`
+ if test '!' -z $prereq; then
+ if test "$ver" \< "$prereq"; then
+ ad_fatal "Autodist $prereq or newer is required for distribution $1"
+ fi
+ fi
+
# Get inherited
inhs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
| grep "inherit " | cut -d' ' -f2 | sort | uniq`
| grep "define " | cut -d' ' -f2 | sort | uniq`
if test "$inhs" = "" && test "$defs" = ""; then
- ad_fatal "Distribution '$1' does not define anything"
+ if test "$1" != "default"; then
+ ad_fatal "Distribution '$1' does not define anything"
+ fi
fi
# Get undefined distdefs
do
echo $i >>autodist.tmp.defs
done
- distdefs=`sort < autodist.tmp.defs | uniq`
+ if test -f autodist.tmp.defs; then
+ distdefs=`sort < autodist.tmp.defs | uniq`
+ fi
distdefs=`echo $distdefs`
rm -f autodist.tmp.defs
fi
# Get defined distribution defines
- defs=`awk "/^#ifdef "$DP"_DIST_|^#else "$DP"_DIST_/ { print; }" \
+ defs=`awk "/^#ifdef ${DP}_DIST_|^#else ${DP}_DIST_/ { print; }" \
$1 |cut -d'*' -f2 |cut -d' ' -f2 | sort | uniq`
# Get explicitly not-defined distribution defines
- ndefs=`awk "/^#ifndef "$DP"_DIST_|^#else !"$DP"_DIST_/ { print; }" \
+ ndefs=`awk "/^#ifndef ${DP}_DIST_|^#else !${DP}_DIST_/ { print; }" \
$1 |cut -d'*' -f2 |cut -d' ' -f2 | cut -d'!' -f2 | sort | uniq`
ad_debug "defs in $1: $defs"
fi
# Get defined distribution defines
- defs=`awk '/^#ifdef SILC_DIST_|^#else \/\* SILC_DIST_/ { print; }' \
+ defs=`awk "/^#ifdef ${DP}_DIST_|^#else \/\* ${DP}_DIST_/ { print; }" \
$1 |cut -d'*' -f2 |cut -d' ' -f2 | sort | uniq`
# Get explicitly not-defined distribution defines
- ndefs=`awk '/^#ifndef SILC_DIST_|^#else \/\* \!SILC_DIST_/ { print; }' \
+ ndefs=`awk "/^#ifndef ${DP}_DIST_|^#else \/\* \!${DP}_DIST_/ { print; }" \
$1 |cut -d'*' -f2 |cut -d' ' -f2 | cut -d'!' -f2 | sort | uniq`
ad_debug "defs in $1: $defs"
# Those distdef lines that remain in the file are removed to make
# the appearance prettier
- echo "/^#ifdef SILC_DIST_|^#endif \/\* SILC_DIST_|^#else \/\* SILC_DIST_|^#else \/\* \!SILC_DIST_|^#ifndef SILC_DIST_/ { next; }" >> $f
+ echo "/^#ifdef "$DP"_DIST_|^#endif \/\* "$DP"_DIST_|^#else \/\* "$DP"_DIST_|^#else \/\* \!"$DP"_DIST_|^#ifndef "$DP"_DIST_/ { next; }" >> $f
echo "{ print; }" >> $f
# Execute the script
###############################################################################
# Autodist code
-usage="Usage: autodist [options] [distribution] [version] [params]"
+usage="Usage: autodist [OPTIONS] [DISTRIBUTION] [VERSION] [PARAMS]"
help="\
Autodist prepares source tree for configuration, compilation and
-distribution. Generates Automake.am files from Automake.ad files,
-configure.ac file from configure.ad file(s), generates the configure
-script by running Autoconf tool, and generates Makefile.in files by
+distribution. Generates Automake.am files from Automake.ad files,
+configure.ac file from configure.ad file(s), generates the configure
+script by running Autoconf tool, and generates Makefile.in files by
running Automake tool.
Operation modes:
#
if test "$DISTDEFS"; then
ad_create_distdefs_h
-else
- ad_fatal "DISTDEFS not defined in $distdir/autodist.conf"
fi
# Get extra parameters from command line
-shift
+if test $# != 0; then
+ shift
+fi
#
# Run pre-hooks