# Whether to output ad_debug information
debug=false
+nolog=false
# Autodist version
ver=@VERSION@
#
ad_log()
{
- echo "$1" >&5
+ if test x$nolog = xfalse; then
+ echo "$1" >&5
+ fi
}
#
ad_debug "creating configure.ac"
if test -f configure.ad.cfs; then
- sed '/AD_INCLUDE_CONFIGURE/ r configure.ad.cfs' $1 > $fname.tmp
- sed -e "/AD_INCLUDE_CONFIGURE/s///" $fname.tmp >> $fname
+ sed '/^AD_INCLUDE_CONFIGURE/ r configure.ad.cfs' $1 > $fname.tmp
+ sed -e "/^AD_INCLUDE_CONFIGURE/d" $fname.tmp >> $fname
rm -f configure.ad.cfs $fname.tmp
else
cat $1 >> $fname
# Process AD_INIT
sed -e "/AD_INIT/s//AC_INIT([$distribution], [$dist_version], [$bug_report], [$package])/" $fname > $fname.tmp
+ # Remove AD_ENABLE_DEPENDENCIES
+ sed -e "/^AD_ENABLE_DEPENDENCIES/d" $fname.tmp > $fname
+
# Process for distribution
- rm -f $fname
- ad_process_file $fname.tmp $fname false
+ rm -f $fname.tmp
+ ad_process_file $fname $fname.tmp false
# Remove any trailing backslashes
- if test -f "$fname"; then
- sed -e :a -e '/\\$/N; s/[ ]*\\\n//; ta' < $fname > configure.ac
+ if test -f "$fname.tmp"; then
+ sed -e :a -e '/\\$/N; s/[ ]*\\\n//; ta' < $fname.tmp > configure.ac
else
- cp -p $fname.tmp configure.ac
+ cp -p $fname configure.ac
fi
rm -f $fname $fname.tmp
do
ad_log " $ff"
fname=`echo $ff | sed s/\.ad//`
+ ad_make_makefile_am $ff $fname.am
+ done
+ ad_log ""
+
+ ad_debug "Ending creating Makefile.am files"
+}
- # Header for the Makefile.am
- cat > $fname.am <<EOF
+#
+# Creates Makefile.am file from the Makefile.ad file.
+#
+# Arguments: ad_make_makefile_am <src> <dst>
+#
+ad_make_makefile_am()
+{
+ local am_deps=false
+ local f=$1
+ local fname=$2
+
+ # Enable dependencies if requested
+ dc=`sed 's/^[ ]*//' < configure.ad | grep -v "^#" \
+ | grep "AD_ENABLE_DEPENDENCIES"`
+ if test "$dc" = "AD_ENABLE_DEPENDENCIES"; then
+ am_deps=true
+ fi
+
+ # Header for the Makefile.am
+ cat > $fname <<EOF
# Automatically generated by Autodist $ver from Makefile.ad. Do not edit.
-# To make changes edit the $ff file in the source tree.
+# To make changes edit the $f file in the source tree.
-# Source: $ff
+# Source: $f
# Generated: `date` by `whoami`
# Distribution: $distribution
# License: $license
EOF
- # Run the distribution processing for this Makefile.ad
- ad_debug "Processing $ff to be $fname.am"
- ad_process_file $ff $fname.tmp false
+ # Run the distribution processing for this Makefile.ad
+ ad_debug "Processing $f to be $fname"
+ ad_process_file $f $fname.tmp false
- # Remove any trailing backslashes
- if test -f "$fname.tmp"; then
- sed -e :a -e '/\\$/N; s/[ ]*\\\n//; ta' < $fname.tmp >> $fname.am
- else
- cat $ff >> $fname.am
- fi
+ # Remove any trailing backslashes
+ if test -f "$fname.tmp"; then
+ sed -e :a -e '/\\$/N; s/[ ]*\\\n//; ta' < $fname.tmp >> $fname
+ else
+ cat $f >> $fname
+ fi
- rm -f $fname.tmp
- done
- ad_log ""
+ # Enable dependencies if requested
+ if test x$am_deps = xtrue; then
+ cat >> $fname <<EOF
- ad_debug "Ending creating Makefile.am files"
+# S_AD_ENABLE_DEPENDENCIES
+\$(srcdir)/Makefile.am: Makefile.ad
+ cd \$(top_srcdir) && autodist -p \$(subdir)/Makefile.ad \$(subdir)/Makefile.am && cd \$(subdir)
+# E_AD_ENABLE_DEPENDENCIES
+EOF
+ fi
+
+ rm -f $fname.tmp
}
#
ad_debug "Ending processing source files: $1"
}
+#
+# Removes Autodist dependencies, as they cannot be delivered to distribution.
+#
+# Arguments: ad_remove_dependencies <distdir>
+#
+ad_remove_dependencies()
+{
+ ad_debug "Removing dependencies"
+
+ ams=`find $1 -type f -name Makefile\.\*`
+ for i in $ams
+ do
+ sed -e "/^# S_AD_ENABLE_DEPENDENCIES/,/^# E_AD_ENABLE_DEPENDENCIES/d" $i > $i.tmp
+ mv $i.tmp $i
+ done
+}
+
#
# Makes distribution sane, ala modtimes. Since we modify the distribution
# we need to make it sane after that.
cp -p $license $am_distdir/COPYING || exit 1
fi
+ # Remove dependencies
+ ad_remove_dependencies $am_distdir
+
# Process noprocesses, first pass
ad_process_noprocess true
ad_process_license_header $f $1
fi
- ad_debug "Getting #ifdef's and #ifndef's"
-
# Get defined distribution defines
defs=`awk "/^#ifdef "$DP"_DIST_|^#else "$DP"_DIST_/ { print; }" \
$1 |cut -d'*' -f2 |cut -d' ' -f2 | sort | uniq`
ad_process_license_header $f $1
fi
- ad_debug "Getting #ifdef's and #ifndef's"
-
# Get defined distribution defines
defs=`awk '/^#ifdef SILC_DIST_|^#else \/\* SILC_DIST_/ { print; }' \
$1 |cut -d'*' -f2 |cut -d' ' -f2 | sort | uniq`
ad_debug "Ending processing source file: $1 $2"
}
+#
+# Processes a non-source file. This is the -p, --process option.
+#
+# Arguments: ad_process <src> <dst>
+#
+ad_process()
+{
+ ad_debug "Starting process: $1 $2"
+
+ nolog=true
+
+ if test '!' -f autodist.dist; then
+ ad_fatal "Autodist has not been run yet to prepare source tree"
+ fi
+
+ # Parse distribution
+ distribution=`grep "dist:" < autodist.dist | cut -d: -f2` || exit 1
+ ad_parse_distribution $distribution false
+ ad_process_distdefs
+
+ # Process file
+ ad_make_makefile_am $1 $2
+
+ ad_debug "Ending process: $1 $2"
+}
+
#
# Run hooks
#
-s, --distdefs [<dist>] print distribution defines of <dist>, then exit
-i, --init initialize Autodist environment, create default
distribution directory and distribution, then exit
+ -p, --process <src> <dst> process file <src> into <dst> for distribution,
+ only non-source files can be processed with -p
-m, --makedist create and package distribution
--gzip create package compressed with gzip (default)
--bzip2 create also package compressed with bzip2
ad_initialize;
exit 0;;
+ -p | --process)
+ shift;
+ if test $# -eq 2; then
+ ad_process $1 $2
+ else
+ echo "${usage}" 1>&2;
+ fi
+ exit 0;;
+
-m | --makedist)
ad_makedist
exit 0;;
Note that, the 'configure.ad' fragments are not real full featured
configure scripts. They must not use 'AD_INIT', 'AD_INCLUDE_CONFIGURE',
'AC_INIT' or any other initialization macros.
+@end defmac
+
+
+@defmac AD_ENABLE_DEPENDENCIES
+This macro is used to enable Autodist dependencies in 'Makefile.ad' files.
+If this macro is used, then after editing 'Makefile.ad' file running
+Autodist manually is not required, but it is run automatically when the
+source is compiled with 'make'. This macro has no arguments.
+
+Note that, the dependencies are enabled only in the prepared source tree.
+Depedencies are not delivered to distribution, as they would require the
+presence of 'Makefile.ad' files, which are not delivered to distribution.
+
+Current Autodist version does not support dependencies in 'configure.ad'
+files, only in 'Makefile.ad' files.
@end defmac
@menu
directory 'distdir', 'autodist.conf' configuration file and the
default distribution 'default', then exits.
+@item -p
+@itemx --process <src> <dst>
+process file <src> into <dst> for distribution, only non-source files can
+be processed with -p.
+
@item -m
@itemx --makedist
Creates and packages distribution