3 # Author: Pekka Riikonen <priikone@silcnet.org>
5 # Copyright (C) 2005 - 2007 Pekka Riikonen
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions are
12 # 1. Redistributions of source code must retain the above copyright
13 # notice, this list of conditions and the following disclaimer.
14 # 2. Redistributions in binary form must reproduce the above copyright
15 # notice, this list of conditions and the following disclaimer in the
16 # documentation and/or other materials provided with the distribution.
17 # 3. The name of the author may not be used to endorse or promote
18 # products derived from this software without specific prior written
21 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
24 # NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
26 # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 ###############################################################################
36 # Be Bourne compatible
37 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
38 # Despite of this, we have managed to segfault some zsh's.
41 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
42 # is contrary to our usage. Disable this feature.
43 alias -g '${1+"$@"}'='"$@"'
45 DUALCASE=1; export DUALCASE # for MKS sh
47 # Support unset when possible.
48 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
54 # Work around bugs in pre-3.0 UWIN ksh.
55 $as_unset ENV MAIL MAILPATH
62 LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
63 LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
66 if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
67 eval $as_var=C; export $as_var
74 ###############################################################################
77 # Packaging and compressing
83 # Distribution subdirectory
87 # This current distribution
89 distfile=$distribution
94 # All inherited distributions in this distribution
97 # All distribution defines for this distribution
100 # All distribution undefines for this distribution
103 # All distribution options
126 # Distribution license and license header
130 # Whether to output ad_debug information
137 ###############################################################################
139 if test -f "$distdir/autodist.conf"; then
140 . $distdir/autodist.conf
146 ###############################################################################
150 # Print out debug information if debugging is enabled. To enable debugging
151 # set the global variable "debug" to true value.
153 # Arguments: ad_debug <ad_debug string>
157 if test x$debug = xtrue; then
165 # Prints out error message and exits the script.
167 # Arguments: ad_fatal <error message>
173 echo autodist: error: $1
179 # Prints out warning message
181 # Arguments: ad_warning <warning message>
187 echo autodist: warning: $1
194 # Arguments: ad_log_open <logfile>
202 This file contains messages produced by the Autodist $ver.
208 # Prints to an open log file
214 if test x$nolog = xfalse; then
220 # Initializes the Autodist environment, creates default distribution
221 # directory, and default distribution.
223 # Arguments: ad_initialize
227 ad_debug "Initializing Autodist environment"
229 # Create default distdir
230 if test '!' -f $distdir; then
234 # Create Autodist configuration file
235 if test -f @AUTODISTDIR@/autodist.conf; then
236 cp -p @AUTODISTDIR@/autodist.conf $distdir
239 # Create default distribution
240 if test -f @AUTODISTDIR@/default; then
241 cp -p @AUTODISTDIR@/default $distdir
244 ad_debug "Autodist environment initialized"
248 # Creates the distdefs header file including defined distdefs
250 # Arguments: ad_create_distdefs_h
252 ad_create_distdefs_h()
254 ad_debug "Creating distdef header file"
260 Automatically generated by Autodist $ver. Do not edit.
262 Generated: `date` by `whoami`
263 Distribution: $distribution
267 #ifndef _`echo $DP`_DISTDEFS_H
268 #define _`echo $DP`_DISTDEFS_H
274 echo "#define $i 1" >>$fname
279 #endif /* _`echo $DP`_DISTDEFS_H */
282 ad_debug "Distdef header file created"
286 # Creates the main configure script for the distribution. This runs
287 # the aclocal, autoheader and autoconf tools.
289 # Arguments: ad_make_configure
293 local run_autoconf=false
295 ad_debug "Starting configure creation"
299 if test "$ACLOCAL"; then
300 ad_debug "Running aclocal"
301 if test x$debug = xtrue; then
304 $ACLOCAL 1>/dev/null 2>/dev/null
306 if test $? != 0; then
307 ad_fatal "aclocal failed"
311 if test "$AUTOCONF"; then
312 ad_debug "Running autoconf"
314 if test $? != 0; then
315 ad_fatal "autoconf failed"
320 if test "$AUTOHEADER"; then
321 ad_debug "Running autoheader"
323 if test $? != 0; then
324 ad_fatal "autoheader failed"
328 if test "$LIBTOOLIZE"; then
329 ad_debug "Running libtoolize"
331 if test $? != 0; then
332 ad_fatal "libtoolize failed"
336 if test x$run_autoconf = xtrue; then
337 if test '!' -f configure; then
338 ad_fatal "creating configure script failed"
342 ad_debug "Ending configure creation"
346 # Creates the configure.ac script from the configure.ad fragments in
347 # the source tree. Takes the source configure file as argument which
348 # is used to create the actual configure.ac.
350 # Arguments: ad_make_configure_ac <configure_ac_source>
352 ad_make_configure_ac()
356 ad_debug "Starting creating configure.ac: $1"
359 ad_log "Following configure.ad files were processed into configure.ac:"
360 ad_log "--------------------------------------------------------------"
362 if test '!' -f $1; then
363 ad_fatal "The configure file '$1' does not exist"
366 check="`sed 's/^[ ]*//' < $1 | grep -v "^#" | grep -e "AD_INIT"`"
367 if test -z $check; then
368 rm -f configure.ad.cfs
369 rm -f $fname $fname.tmp
370 ad_fatal "The 'AD_INIT' macro has not been set in configure.ac"
373 rm -f configure.ac configure.ad.cfs
375 cfs=`find . -type f -name configure\*\.ad`
378 if test "x$i" = "x$1"; then
382 ad_debug "including $i"
385 cat $i >> configure.ad.cfs
388 if test -f configure.ad.cfs; then
389 check="`sed 's/^[ ]*//' < $1 | grep -v "^#" | grep -e "AD_INCLUDE_CONFIGURE"`"
390 if test -z $check; then
391 rm -f configure.ad.cfs
392 ad_warning "configure.ad fragments found but 'AD_INCLUDE_CONFIGURE' is not set"
396 # Header for configure.ac
397 fname="configure.tmp.ac"
399 # Automatically generated by Autodist $ver. Do not edit.
400 # To make changes edit the configure.ad file in the source tree.
402 # Source: configure.ad
403 # Generated: `date` by `whoami`
404 # Distribution: $distribution
409 ad_debug "creating configure.ac"
410 if test -f configure.ad.cfs; then
411 sed '/^AD_INCLUDE_CONFIGURE/ r configure.ad.cfs' $1 > $fname.tmp
412 sed -e "/^AD_INCLUDE_CONFIGURE/d" $fname.tmp >> $fname
413 rm -f configure.ad.cfs $fname.tmp
419 sed -e "/AD_INIT/s//AC_INIT([$distribution], [$dist_version], [$bug_report], [$package])/" $fname > $fname.tmp
421 # Remove AD_DISABLE_DEPENDENCIES
422 sed -e "/^AD_DISABLE_DEPENDENCIES/d" $fname.tmp > $fname
424 # Process for distribution
426 ad_process_file $fname $fname.tmp false
428 # Remove any trailing backslashes
429 if test -f "$fname.tmp"; then
430 sed -e :a -e '/\\$/N; s/[ ]*\\\n//; ta' < $fname.tmp > configure.ac
432 cp -p $fname configure.ac
434 rm -f $fname $fname.tmp
436 ad_log " ./configure.ad"
439 ad_debug "Ending creating configure.ac: $1"
443 # Creates the Makefile.in files by running the automake tool.
445 # Arguments: ad_make_makefile_ins
447 ad_make_makefile_ins()
449 ad_debug "Starting creating Makefile.in files"
451 if test "$AUTOMAKE"; then
452 ad_debug "Running automake"
454 if test $? != 0; then
455 ad_fatal "automake failed"
459 ad_debug "Ending creating Makefile.in files"
463 # Creates the Makefile.am files from the Makefile.ad files in the
464 # source tree. This runs the distribution specific processing for the
467 # Arguments: ad_make_makefile_ams
469 ad_make_makefile_ams()
471 ad_debug "Starting creating Makefile.am files"
474 ad_log "Following Makefile.ad files were processed into Makefile.am files:"
475 ad_log "------------------------------------------------------------------"
477 files=`find . -type f -name Makefile\.ad`
481 fname=`echo $ff | sed s/\.ad//`
482 ad_make_makefile_am $ff $fname.am
486 ad_debug "Ending creating Makefile.am files"
490 # Creates Makefile.am file from the Makefile.ad file.
492 # Arguments: ad_make_makefile_am <src> <dst>
494 ad_make_makefile_am()
500 # Disable dependencies if requested
501 dc=`sed 's/^[ ]*//' < configure.ad | grep -v "^#" \
502 | grep "AD_DISABLE_DEPENDENCIES"`
503 if test "$dc" = "AD_DISABLE_DEPENDENCIES"; then
507 # Header for the Makefile.am
509 # Automatically generated by Autodist $ver from Makefile.ad. Do not edit.
510 # To make changes edit the $f file in the source tree.
513 # Generated: `date` by `whoami`
514 # Distribution: $distribution
519 # Run the distribution processing for this Makefile.ad
520 ad_debug "Processing $f to be $fname"
521 ad_process_file $f $fname.tmp false
523 # Remove any trailing backslashes
524 if test -f "$fname.tmp"; then
525 sed -e :a -e '/\\$/N; s/[ ]*\\\n//; ta' < $fname.tmp >> $fname
530 # Enable dependencies if requested
531 if test x$am_deps = xtrue; then
532 # Get list of configure.ad's to get them into deps also
533 cfs=`find . -type f -name configure\*\.ad`
534 cfs=`echo $cfs | sed 's/\.\///g'`
538 # S_AD_ENABLE_DEPENDENCIES
539 \$(srcdir)/Makefile.am: Makefile.ad
540 cd \$(top_srcdir) && autodist -p makefile \$(subdir)/Makefile.ad \$(subdir)/Makefile.am && cd \$(subdir)
541 \$(srcdir)/configure.ac: $cfs
542 cd \$(top_srcdir) && autodist -p configure \$(top_srcdir)/configure.ad && cd \$(subdir)
543 # E_AD_ENABLE_DEPENDENCIES
551 # Processes all files with .ad suffix, with exception of configure*.ad
552 # and Makefile.ad files, for distribution from the source tree.
554 # Arguments: ad_process_ads false
558 ad_debug "Starting processing .ad files"
561 ad_log "Following .ad files were processed:"
562 ad_log "-----------------------------------"
564 files=`find . -type f -name \*\.ad \! -name configure\*\.ad \! -name Makefile\.ad`
567 fname=`echo $i | sed s/\.ad//`
569 ad_debug "Processing $i to be $fname"
570 ad_log " $i into $fname"
572 # Run the distribution processing for this file
573 ad_process_file $i $fname false
574 if test -f $fname; then
575 cp -p $i $fname || exit 1
581 ad_debug "Ending processing .ad files"
585 # Includes files specified in the distribution for inclusion. Used when
586 # creating the distribution for packaging.
588 # include has the following format in distfile:
590 # include <path> [<dest path>]
592 # If only source path, which may be file, directory or regular expression,
593 # is specified the path will be same in distribution. If the destination
594 # path is specified that will be the new name and/or new location of the
595 # source path. This, in effect, is a cp utility with ability to create
596 # directories if they do not exist.
598 # Arguments: ad_dist_includes <includeslist> <recursive> <log>
604 ad_debug "Starting running includes: $1 $2"
606 if test x$3 = xtrue; then
608 ad_log "Following files and directories were included in distribution:"
609 ad_log "--------------------------------------------------------------"
612 # By default do not expand pathnames
615 # Add : separator at the end
616 incs="`echo "$1" | sed 's/$/ : /'`"
622 if test "$i" = ":" && test -z "$src"; then
625 if test -z "$src"; then
629 if test -z "$dst" && test "$i" != ":"; then
635 ad_debug "Including $src into $dst"
637 if test -f "$src"; then
640 if test "$src" = "$dst"; then
641 # Add to same location
642 d=`echo $src | sed 's,/[^/]*$,,'`
643 if test "$d" != "$src" && test "$d" != "." && \
644 test '!' -d $am_distdir/$d; then
645 mkdir -p -- $am_distdir/$d || exit 1
648 # Add to different location
649 check=`echo "$dst" | sed 's/?//; s/*//; s/\[//; s/\]//'`
650 if test "$check" != "$dst"; then
651 ad_fatal "Invalid destination in 'include $src $dst'"
654 d=`echo $dst | sed 's,/[^/]*$,,'`
655 if test "$d" != "$dst" && test "$d" != "." && \
656 test '!' -d $am_distdir/$d; then
657 mkdir -p -- $am_distdir/$d || exit 1
661 if test x$3 = xtrue; then
662 ad_log " $src into $am_distdir/$d"
664 cp -p $src $am_distdir/$d || exit 1
666 elif test -d "$src"; then
669 if test "$src" = "$dst"; then
670 # Add to same location
671 d=`echo $src | sed 's,/[^/]*$,,'`
672 ds=`echo $src | sed 's/\/$//'`
673 if test "$ds" = "$d"; then
674 d=`echo $d | sed 's,/[^/]*$,,'`
676 if test "$ds" = "$d"; then
679 if test '!' -d $am_distdir/$d && test "$ds" != "$d"; then
680 mkdir -p -- $am_distdir/$d || exit 1
683 if test x$3 = xtrue; then
684 ad_log " $src into $am_distdir/$d"
686 cp -pR $src $am_distdir/$d || exit 1
688 # Add to different location
689 check=`echo "$dst" | sed 's/?//; s/*//; s/\[//; s/\]//'`
690 if test "$check" != "$dst"; then
691 ad_fatal "Invalid destination in 'include $src $dst'"
694 d=`echo $dst | sed 's,/[^/]*$,,'`
695 ds=`echo $dst | sed 's/\/$//'`
696 if test "$ds" = "$d"; then
697 d=`echo $d | sed 's,/[^/]*$,,'`
699 if test '!' -d $am_distdir/$d && test "$dst" != "$d"; then
700 mkdir -p -- $am_distdir/$d || exit 1
703 if test x$3 = xtrue; then
704 ad_log " $src into $am_distdir/$dst"
706 cp -pR $src $am_distdir/$dst || exit 1
709 elif test x$2 != xtrue; then
710 # We assume regular expression in filename
711 check=`echo "$src" | sed 's/?//; s/*//; s/\[//; s/\]//'`
712 if test "$check" == "$src"; then
713 if test '!' -a $src; then
714 ad_fatal "Including $src: No such file or directory"
721 # Recursively call this function with expanded pathnames. The
722 # reason why we don't let sh by default expand pathnames is that
723 # the include's destination is optional. If sh expands by default
724 # we don't know the destination. For this reason, we handle the
725 # expansion here ourselves.
727 # If src and dst are same, then expand the pathname as we'll copy
728 # matches to their own locations.
729 if test "$src" = "$dst"; then
730 # Expand pathnames, and format to our include format
732 srcs=`echo $src | sed -e 's/ / : /g' -e 's/^/ : /'` || exit 1
735 # Destination is new, and it has to be a directory.
736 check=`echo "$dst" | sed 's/?//; s/*//; s/\[//; s/\]//'`
737 if test "$check" != "$dst"; then
738 ad_fatal "Invalid destination in 'include $src $dst'"
741 # Make sure dst has / at the end, as this must be a directory
742 dst=`echo $dst | sed 's/\/$//; s/$/\//'`
745 dste=`echo $dst | sed 's/\\//\\\\\//g'` || exit 1
747 # Expand pathnames, and format to our include format
749 srcs=`echo $src | sed -e "s/ / $dste : /g" \
750 -e 's/^/ : /' -e "s/$/ $dste/"` || exit 1
754 # Include recursively
755 ad_dist_includes "$srcs" true
757 elif test '!' -a $src; then
758 ad_fatal "Including $src: No such file or directory"
765 if test x$3 = xtrue; then
771 ad_debug "Ending running includes: $1 $2"
775 # Excludes files specified in the distribution for exclusion. Used when
776 # creating the distribution for packaging.
778 # exclude has the following format in distfile:
782 # The path may be file, directory or regular expression.
784 # Arguments: ad_dist_includes <excludelist> <log>
788 ad_debug "Starting running excludes: $1"
790 if test x$2 = xtrue; then
792 ad_log "Following files and directories were excluded from distribution:"
793 ad_log "----------------------------------------------------------------"
797 cd $am_distdir || exit 1
800 ad_debug "Excluding $i"
801 if test x$2 = xtrue; then
808 if test x$2 = xtrue; then
812 ad_debug "Ending running excludes: $1"
816 # Processes the entire tree for distribution. This inspects files other
817 # than source and header files, with exception of any file with .ad
818 # suffix, and performs distribution processing for the file. The original
819 # file is replaced with the processed file. This function is used when
820 # creating the distribution for packaging.
822 # Arguments: ad_process_tree <directory>
826 ad_debug "Starting processing non-source files: $1"
828 # Take files, except source and .ad files.
829 files=`find $am_distdir -type f \! -name \*\.ad \( \
830 \! -name \*\.[cC] -a \
831 \! -name \*\.[cC][cCpP] -a \
832 \! -name \*\.[cC][xX][xX] -a \
833 \! -name \*\.[cC][pP][pP] -a \
834 \! -name \*\.[cC]++ -a \
836 \! -name \*\.[hH] -a \
838 \! -name \*\.[cC]\.in -a \
839 \! -name \*\.[cC][cCpP]\.in -a \
840 \! -name \*\.[cC][xX][xX]\.in -a \
841 \! -name \*\.[cC][pP][pP]\.in -a \
842 \! -name \*\.[cC]++\.in -a \
843 \! -name \*\.m\.in -a \
844 \! -name \*\.[hH]\.in -a \
845 \! -name \*\.hh\.in \)`
846 files=`echo $files | sed 's/$am_distdir//'`
850 ad_process_file $ff $ff.tmp true
851 if test -f $ff.tmp; then
853 mv -f $ff.tmp $ff || exit 1
857 ad_debug "Ending processing non-source files: $1"
861 # Processes the entire source tree for distribution. This inspects files
862 # in the source tree, with exception of any file with .ad suffix, and
863 # performs distribution processing for the file. The original file is
864 # replaced with the processed file. This function is used when creating
865 # the distribution for packaging.
867 # Call this before ad_process_tree().
869 # Arguments: ad_process_source_tree <directory>
871 ad_process_source_tree()
873 ad_debug "Starting processing source files: $1"
875 # We take only C/C++ files since they use the C compiler friendly
876 # version of distdefs. Other files are not assumed to use them.
877 files=`find $am_distdir -type f \! -name \*\.ad \( \
879 -name \*\.[cC][cCpP] -o \
880 -name \*\.[cC][xX][xX] -o \
881 -name \*\.[cC][pP][pP] -o \
882 -name \*\.[cC]++ -o \
886 -name \*\.[cC]\.in -o \
887 -name \*\.[cC][cCpP]\.in -o \
888 -name \*\.[cC][xX][xX]\.in -o \
889 -name \*\.[cC][pP][pP]\.in -o \
890 -name \*\.[cC]++\.in -o \
892 -name \*\.[hH]\.in -o \
897 ad_process_source_file $ff $ff.tmp true
898 if test -f $ff.tmp; then
900 mv -f $ff.tmp $ff || exit 1
904 ad_debug "Ending processing source files: $1"
908 # Removes Autodist dependencies, as they cannot be delivered to distribution.
910 # Arguments: ad_remove_dependencies <distdir>
912 ad_remove_dependencies()
914 ad_debug "Removing dependencies"
916 ams=`find $1 -type f -name Makefile\.\*`
919 sed -e "/^# S_AD_ENABLE_DEPENDENCIES/,/^# E_AD_ENABLE_DEPENDENCIES/d" $i > $i.tmp
925 # Makes distribution sane, ala modtimes. Since we modify the distribution
926 # we need to make it sane after that.
928 # Arguments: ad_makedist_makesane
930 ad_makedist_makesane()
932 ad_debug "Making distribution file modtimes sane"
934 # DO NOT change these order unless you know what you are doing.
935 if test -f $am_distdir/configure.ac; then
936 touch $am_distdir/configure.ac
939 if test -f $am_distdir/aclocal.m4; then
940 touch $am_distdir/aclocal.m4
943 if test '!' -f Makefile; then
944 ad_fatal "Makefile: No such file or directory"
947 configh=`grep "^CONFIG_HEADER" Makefile | cut -d= -f2 | sed 's/^[ ]*//'`
948 touch $am_distdir/$configh.in 1>/dev/null 2>/dev/null
950 files=`find $am_distdir -type f -name Makefile\.in`
956 if test -f $am_distdir/configure; then
957 touch $am_distdir/configure
960 if test -f $am_distdir/config.status; then
961 touch $am_distdir/config.status
964 ad_debug "Distribution made sane"
968 # Creates distribution of the source tree. All files in the distribution
969 # will be processed and the distribution will be packaged.
971 # Arguments: ad_makedist
975 ad_log_open "makedist.log"
976 ad_debug "Starting distribution creation"
978 ad_log "Created distribution"
979 ad_log "--------------------"
982 if test '!' -f autodist.dist; then
983 ad_fatal "Autodist has not been run yet to prepare source tree"
986 if test -z $MAKE; then
987 ad_fatal "The MAKE variable is not set in autodist.conf"
990 # Get distdir from Makefile
991 if test '!' -f Makefile; then
992 ad_fatal "The source tree is not configured, run ./configure first"
995 # Parse the requested distribution
996 distribution=`grep "dist:" < autodist.dist | cut -d: -f2` || exit 1
997 dist_version=`grep "ver:" < autodist.dist | cut -d: -f2` || exit 1
998 am_distdir=`grep "distdir:" < autodist.dist | cut -d: -f2` || exit 1
999 params=`grep "params:" < autodist.dist | cut -d: -f2` || exit 1
1000 ad_parse_distribution $distribution false
1001 ad_log " Distribution: $distribution $dist_version"
1002 ad_log " Destination directory: $am_distdir"
1006 if test x$opt_no_dist = xtrue; then
1007 ad_fatal "The '$distribution' distribution cannot be packaged"
1010 # Run pre-dist-hooks
1011 ad_run_dist_hooks "$pre_dist_hooks" "$params"
1013 # Create distribution directory
1014 ad_debug "Creating distribution directory $am_distdir"
1015 $MAKE distdir || exit 1
1016 chmod -R a+r $am_distdir
1018 if test '!' -d $am_distdir; then
1019 ad_fatal "Distribution directory $am_distdir not created"
1022 # Run pre-process-dist-hooks
1023 ad_run_dist_hooks "$pre_p_dist_hooks" "$params"
1026 ad_dist_excludes "$excludes" true
1029 ad_dist_includes "$includes" false true
1031 # Include specific license file if specified
1032 if test "$license" != ""; then
1034 ad_log "License file in distribution:"
1035 ad_log "-----------------------------"
1036 ad_log " $license into $am_distdir/COPYING"
1038 cp -p $license $am_distdir/COPYING || exit 1
1041 # Remove dependencies
1042 ad_remove_dependencies $am_distdir
1044 # Process noprocesses, first pass
1045 ad_process_noprocess true
1048 ad_log "Following files were not re-licensed:"
1049 ad_log "-------------------------------------"
1051 # Process source files
1052 ad_debug "Process distribution source tree"
1053 ad_process_source_tree $am_distdir
1055 # Process non-source files
1056 ad_debug "Process distribution tree"
1057 ad_process_tree $am_distdir
1061 # Process noprocesses, second pass
1062 ad_process_noprocess false
1064 # Run post-process_dist-hooks
1065 ad_run_dist_hooks "$post_p_dist_hooks" "$params"
1067 # Make distribution sane
1068 ad_makedist_makesane
1071 ad_debug "Packaging distribution"
1072 tar chof $am_distdir.tar $am_distdir || exit 1
1075 ad_debug "Compressing distribution package"
1076 if test x$ad_gzip = xtrue; then
1077 ad_debug "Compressing distribution package $am_distdir.tar.gz"
1078 gzip -9 -c $am_distdir.tar > $am_distdir.tar.gz || exit 1
1080 if test x$ad_bzip2 = xtrue; then
1081 ad_debug "Compressing distribution package $am_distdir.tar.bz2"
1082 bzip2 -9 -c $am_distdir.tar > $am_distdir.tar.bz2 || exit 1
1084 if test x$ad_compress = xtrue; then
1085 ad_debug "Compressing distribution package $am_distdir.tar.Z"
1086 compress -c $am_distdir.tar > $am_distdir.tar.Z || exit 1
1088 if test x$ad_zip = xtrue; then
1089 rm -f $am_distdir.zip
1090 ad_debug "Compressing distribution package $am_distdir.zip"
1091 zip -rq $am_distdir.zip $am_distdir || exit 1
1093 rm -f $am_distdir.tar
1095 # Run post-dist-hooks
1096 ad_run_dist_hooks "$post_dist_hooks" "$params"
1101 ad_log "Distribution created successfully."
1103 ad_debug "Ending distribution creation"
1107 # Handles distribution options.
1109 # option has the following format in distfile:
1113 # Following options are supported:
1119 # Arguments: ad_handle_options <options>
1123 ad_debug "Handling options: $1"
1127 if test "$i" = "template"; then
1130 elif test "$i" = "no-dist"; then
1133 elif test "$i" = "no-inherit"; then
1141 # Clears set options
1143 # Arguments: ad_clear_options
1149 opt_no_inherit=false
1153 # Parses the distribution. Gets all distribution defines from the
1154 # distribution. This also expands all inherited distributions recursively
1155 # to get all inherited distribution defines. From inherited distributions
1156 # their name and package name is not inherited.
1158 # Arguments: ad_parse_distribution <distribution name> <inherit>
1160 ad_parse_distribution()
1179 ad_debug "Starting parsing distribution: $1 $2"
1181 if test '!' -f $distdir/$1; then
1182 ad_fatal "Distribution '$1' is not declared"
1185 # Get and enforce prereq version
1186 prereq=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1187 | grep "prereq " | cut -d' ' -f2- | sort | uniq`
1188 if test '!' -z $prereq; then
1189 if [[ $ver < $prereq ]]; then
1190 ad_fatal "Autodist $prereq or newer is required for distribution $1"
1195 inhs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1196 | grep "inherit " | cut -d' ' -f2 | sort | uniq`
1199 defs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1200 | grep "define " | cut -d' ' -f2 | sort | uniq`
1202 if test "$inhs" = "" && test "$defs" = ""; then
1203 ad_fatal "Distribution '$1' does not define anything"
1206 # Get undefined distdefs
1207 undefs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1208 | grep "undef " | cut -d' ' -f2 | sort | uniq`
1211 incs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1212 | grep "include " | sed 's/include / : /'`
1215 excs=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1216 | grep "exclude " | cut -d' ' -f2- | sort | uniq`
1219 nops=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1220 | grep "noprocess " | cut -d' ' -f2- | sort | uniq`
1223 opts=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1224 | grep "option " | cut -d' ' -f2- | sort | uniq`
1227 ad_handle_options "$opts"
1228 if test x$2 = xtrue && test x$opt_no_inherit = xtrue; then
1229 ad_fatal "Distribution '$1' cannot be inherited"
1231 if test x$2 = xfalse && test x$opt_template = xtrue; then
1232 ad_fatal "Template distribution '$1' cannot be prepared or packaged"
1235 ad_debug "inherits: $inhs"
1236 ad_debug "distdefs: $defs"
1237 ad_debug "includes: $incs"
1238 ad_debug "excludes: $excs"
1239 ad_debug "noprocess: $nops"
1240 ad_debug "undistdefs: $undefs"
1241 ad_debug "options: $opts"
1243 # Expand distdefs from inherited distributions
1246 if test x$1 = x$i; then
1247 ad_fatal "Infinite recursion detected. Fix the '$distdir/$1' \
1248 distribution to not have 'inherit $i' declared."
1251 if test '!' -f $distdir/$i; then
1252 ad_fatal "Distribution '$i' is not declared (inherited from '$1')"
1255 ad_parse_distribution $i true
1260 license=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1261 | grep "license " | cut -d' ' -f2`
1262 licenseh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1263 | grep "license-header " | sed 's/license-header / : /'`
1265 ad_debug "license: $license"
1266 ad_debug "licenseh: $licenseh"
1268 if test x$2 = xfalse; then
1269 # Take rest of the stuff from top distribution
1271 # We take precedence on defined and undefined distdefs. Remove
1272 # undefined distdefs if we have defined them.
1275 ad_debug "defining undefined $d distdef"
1276 undistdefs=`echo $undistdefs | sed s/$d//g`
1279 # Get distribution name
1280 dname=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1281 | grep "name " | cut -d' ' -f2-`
1283 if test "$dname"; then
1287 # Get distribution package name (optional)
1288 dpname=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1289 | grep "package " | cut -d' ' -f2`
1291 if test "$dpname"; then
1294 package=$distribution
1297 # Get Bug-report email address (optional)
1298 bugr=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1299 | grep "bug-report " | cut -d' ' -f2-`
1301 if test "$bugr"; then
1305 ad_debug "distribution: $distribution"
1306 ad_debug "package: $package"
1307 ad_debug "bug-report: $bug_report"
1309 # Get hooks (optional)
1310 prh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1311 | grep "pre-hook " | cut -d' ' -f2-`
1312 poh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1313 | grep "post-hook " | cut -d' ' -f2-`
1314 prdh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1315 | grep "pre-dist-hook " | cut -d' ' -f2-`
1316 podh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1317 | grep "post-dist-hook " | cut -d' ' -f2-`
1318 prpdh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1319 | grep "pre-process-dist-hook " | cut -d' ' -f2-`
1320 popdh=`sed 's/^[ ]*//' < $distdir/$1 | grep -v "^#" \
1321 | grep "post-process-dist-hook " | cut -d' ' -f2-`
1323 pre_hooks="$pre_hooks $prh"
1324 post_hooks="$post_hooks $poh"
1325 pre_dist_hooks="$pre_dist_hooks $prdh"
1326 post_dist_hooks="$post_dist_hooks $podh"
1327 pre_p_dist_hooks="$pre_p_dist_hooks $prpdh"
1328 post_p_dist_hooks="$post_p_dist_hooks $popdh"
1329 doptions="$doptions $opts"
1331 ad_handle_options "$doptions"
1332 ad_debug "options: $doptions"
1336 inherits="$inherits $inhs"
1337 distdefs="$distdefs $defs"
1338 includes="$includes $incs"
1339 excludes="$excludes $excs"
1340 noprocess="$noprocess $nops"
1341 undistdefs="$undistdefs $undefs"
1343 ad_debug "Ending parsing distribution: $1 $2"
1347 # Processes parsed distdefs. Removes duplicates, and undefined distdefs
1348 # from the distdefs.
1350 # Arguments: ad_process_distdefs
1352 ad_process_distdefs()
1354 ad_debug "Starting processing distdefs"
1357 ad_log "Following distdefs were processed:"
1358 ad_log "----------------------------------"
1360 # Remove all undefined distribution defines
1361 for i in $undistdefs
1363 ad_debug "undefining $i distdef"
1364 distdefs=`echo $distdefs | sed s/$i//g`
1367 rm -f autodist.tmp.defs
1369 # Remove duplicate distdefs
1372 echo $i >>autodist.tmp.defs
1374 distdefs=`sort < autodist.tmp.defs | uniq`
1375 distdefs=`echo $distdefs`
1376 rm -f autodist.tmp.defs
1385 ad_debug "distdefs=$distdefs"
1387 ad_debug "Ending processing distdefs"
1391 # Processes for a license header change.
1393 # Arguments: ad_process_license_header <scriptfile> <sourcefile>
1395 ad_process_license_header()
1397 ad_debug "Starting license header processing"
1399 # Add : separator at the end
1400 lics=`echo "$licenseh" | sed 's/$/ : /'`
1406 if test "$i" = ":" && test -z "$src"; then
1409 if test -z "$src"; then
1413 if test -z "$dst" && test "$i" != ":"; then
1416 ad_fatal "Missing argument in 'license-header $src'"
1419 ad_debug "Replacing $src license with $dst license"
1421 if test '!' -f $src; then
1422 ad_fatal "License header $src: No such file or directory"
1425 if test '!' -f $dst; then
1426 ad_fatal "License header $dst: No such file or directory"
1429 # Awk script to replace the license header
1430 fl=`sed q $src | sed 's/\\//\\\\\//g' > autodist.lsrc` || exit 1
1431 ll=`sed -n '$p' $src | sed 's/\\//\\\\\//g' > autodist.ldst` || exit 1
1432 echo "BEGIN { N=0; } /`cat autodist.lsrc`/,/`cat autodist.ldst`/ { FILE1=\"$src\"; FILE2=\"$dst\"; getline F1 < FILE1; getline F2 < FILE2; if (F1) { N=sub(F1, F2); } else { F1=\"\$\"; N=sub(F1, F2); } if (N == 0) print 0 > \"$2.norelicense\"; } END { if (N == 0) print 0 > \"$2.norelicense\"; }" >> $1
1433 rm -f autodist.lsrc autodist.ldst
1439 ad_debug "Ending license header processing"
1443 # Process specified noprocesses. This is called during makedist.
1444 # The noprocess first copies the noprocess files and dirs into a temp
1445 # directory, and then removes them from the distdir. This way they are
1446 # not processed by Autodist. After processing they are returned to their
1447 # correct locations from the temp dir. Dirty, yeah, but the way we do
1448 # this until better one comes along.
1450 # Arguments: ad_process_noprocess <process>
1452 # If <process> is true this excludes and if false this includes.
1454 ad_process_noprocess()
1456 ad_debug "Starting running noprocesses"
1462 if test x$1 = xtrue; then
1464 ad_log "Following files and directories were not processed:"
1465 ad_log "---------------------------------------------------"
1467 f="$cur/autodist__noprocess"
1469 mkdir -p -- $f || exit 1
1471 # First, include them to new location with correct directory structure.
1472 old_am_distdir="$am_distdir"
1473 cd $am_distdir || exit 1
1476 nops=`echo $nops | sed -e 's/ / : /g' -e 's/^/ : /'` || exit 1
1477 ad_dist_includes "$nops" false false
1478 am_distdir="$old_am_distdir"
1480 # Then, remove from distdir (they are in temp dir now)
1490 # Copy from the temp dir back to distdir
1491 cd autodist__noprocess || exit 1
1492 old_am_distdir="$am_distdir"
1493 am_distdir="$cur/$old_am_distdir"
1495 nops=`echo $nops | sed -e 's/ / : /g' -e 's/^/ : /'` || exit 1
1497 ad_dist_includes "$nops" false false
1499 am_distdir="$old_am_distdir"
1501 rm -rf autodist__noprocess
1506 ad_debug "Ending running noprocesses"
1510 # Process a file given as argument for the distribution.
1512 # Arguments: ad_process_file <filepath> <dest_filepath> <re-license>
1521 # Process only regular files
1522 if test '!' -f $1; then
1526 ad_debug "Starting processing file: $1 $2"
1528 f="autodist.tmp.script"
1531 # If license header is provided, replace the license header in the file.
1532 if test x$3 = xtrue; then
1533 ad_process_license_header $f $1
1536 # Get defined distribution defines
1537 defs=`awk "/^#ifdef "$DP"_DIST_|^#else "$DP"_DIST_/ { print; }" \
1538 $1 |cut -d'*' -f2 |cut -d' ' -f2 | sort | uniq`
1540 # Get explicitly not-defined distribution defines
1541 ndefs=`awk "/^#ifndef "$DP"_DIST_|^#else !"$DP"_DIST_/ { print; }" \
1542 $1 |cut -d'*' -f2 |cut -d' ' -f2 | cut -d'!' -f2 | sort | uniq`
1544 ad_debug "defs in $1: $defs"
1545 ad_debug "ndefs in $1: $ndefs"
1547 # Create the script to include and exclude stuff in the file according
1548 # to the distribution defines
1551 ad_debug "processing ifdefs"
1557 if test x$d = x$i; then
1563 # If distribution define was not found exclude those lines from the file.
1564 # This also handles the #ifdef's #else (ie. #ifndef) branch.
1565 if test x$found = xfalse; then
1566 ad_debug "ifdef $d will be excluded (it is NOT defined)"
1567 echo "/^#ifdef $d$/,/^#else !$d$|^#endif $d$/ { next; }" >> $f
1569 echo "/^#else !$d$/,/^#endif $d$/ { next; }" >> $f
1574 ad_debug "processing ifndefs"
1580 if test x$d = x$i; then
1586 # If distribution define was found exclude those lines from the file.
1587 # This also handles the #ifndef's #else (ie. #ifdef) branch.
1588 if test x$found = xtrue; then
1589 ad_debug "ifndef $d will be excluded (it IS defined)"
1590 echo "/^#ifndef $d$/,/^#else $d$|^#endif $d$/ { next; }" >> $f
1592 echo "/^#else $d$/,/^#endif $d$/ { next; }" >> $f
1596 # Now process the file with the script
1599 # Those distdef lines that remain in the file are removed to make
1600 # the appearance prettier
1601 echo "/^#ifdef "$DP"_DIST_|^#endif "$DP"_DIST_|^#else "$DP"_DIST_|^#else !"$DP"_DIST_|^#ifndef "$DP"_DIST_/ { next; }" >> $f
1602 echo "{ print; }" >> $f
1604 # Execute the script
1605 cp -p $1 $2 || exit 1
1606 awk -f $f $1 > $2 || exit 1
1611 # Log if file was not relicensed
1612 if test -f "$1.norelicense"; then
1614 rm -f $1.norelicense
1617 ad_debug "Ending processing file: $1 $2"
1621 # Process a source file given as argument for the distribution.
1623 # Arguments: ad_process_source_file <filepath> <dest_filepath> <re-license>
1625 ad_process_source_file()
1632 # Process only regular files
1633 if test '!' -f $1; then
1637 ad_debug "Starting processing source file: $1 $2"
1639 f="autodist.tmp.script"
1642 # If license header is provided, replace the license header in the file.
1643 if test x$3 = xtrue; then
1644 ad_process_license_header $f $1
1647 # Get defined distribution defines
1648 defs=`awk '/^#ifdef SILC_DIST_|^#else \/\* SILC_DIST_/ { print; }' \
1649 $1 |cut -d'*' -f2 |cut -d' ' -f2 | sort | uniq`
1651 # Get explicitly not-defined distribution defines
1652 ndefs=`awk '/^#ifndef SILC_DIST_|^#else \/\* \!SILC_DIST_/ { print; }' \
1653 $1 |cut -d'*' -f2 |cut -d' ' -f2 | cut -d'!' -f2 | sort | uniq`
1655 ad_debug "defs in $1: $defs"
1656 ad_debug "ndefs in $1: $ndefs"
1658 # Create the script to include and exclude stuff in the file according
1659 # to the distribution defines
1662 ad_debug "processing ifdefs"
1668 if test x$d = x$i; then
1674 # If distribution define was not found exclude those lines from the file.
1675 # This also handles the #ifdef's #else (ie. #ifndef) branch.
1676 if test x$found = xfalse; then
1677 ad_debug "ifdef $d will be excluded (it is NOT defined)"
1678 echo "/^#ifdef $d$/,/^#else \/\* \!$d |^#endif \/\* $d / { next; }" >> $f
1680 echo "/^#else \/\* \!$d /,/^#endif \/\* $d / { next; }" >> $f
1685 ad_debug "processing ifndefs"
1691 if test x$d = x$i; then
1697 # If distribution define was found exclude those lines from the file.
1698 # This also handles the #ifndef's #else (ie. #ifdef) branch.
1699 if test x$found = xtrue; then
1700 ad_debug "ifndef $d will be excluded (it IS defined)"
1701 echo "/^#ifndef $d$/,/^#else \/\* $d |^#endif \/\* $d / { next; }" >> $f
1703 echo "/^#else \/\* $d /,/^#endif \/\* $d / { next; }" >> $f
1707 # Now process the file with the script
1710 # Those distdef lines that remain in the file are removed to make
1711 # the appearance prettier
1712 echo "/^#ifdef SILC_DIST_|^#endif \/\* SILC_DIST_|^#else \/\* SILC_DIST_|^#else \/\* \!SILC_DIST_|^#ifndef SILC_DIST_/ { next; }" >> $f
1713 echo "{ print; }" >> $f
1715 # Execute the script
1716 cp -p $1 $2 || exit 1
1717 awk -f $f $1 > $2 || exit 1
1722 # Log if file was not relicensed
1723 if test -f "$1.norelicense"; then
1725 rm -f $1.norelicense
1728 ad_debug "Ending processing source file: $1 $2"
1732 # Processes a file. This is the -p, --process option.
1734 # Arguments: ad_process <type> <src> <dst>
1738 ad_debug "Starting process: $1 $2 $3"
1742 if test '!' -f autodist.dist; then
1743 ad_fatal "Autodist has not been run yet to prepare source tree"
1746 # Parse distribution
1747 distribution=`grep "dist:" < autodist.dist | cut -d: -f2` || exit 1
1748 dist_version=`grep "ver:" < autodist.dist | cut -d: -f2` || exit 1
1749 ad_parse_distribution $distribution false
1756 ad_fatal "File type $1 requires <dst> argument"
1758 ad_make_makefile_am $2 $3
1762 ad_make_configure_ac $2
1767 ad_fatal "File type $1 requires <dst> argument"
1769 ad_process_file $2 $3 false
1774 ad_fatal "File type $1 requires <dst> argument"
1776 ad_process_source_file $2 $3 false
1780 ad_fatal "Unknown file type: $1";
1788 # Arguments: ad_run_hooks <hooks> <params>
1792 ad_debug "Running hooks: $1"
1795 ad_log "Hooks executed:"
1796 ad_log "--------------"
1800 if test '!' -f $i; then
1801 ad_fatal "Hook script $i does not exist"
1803 ad_log " sh $i \"$distribution\" \"$dist_version\" \"$package\" \"$2\""
1804 sh $i "$distribution" "$dist_version" "$package" "$2" || exit 1
1808 ad_debug "Ending running hooks: $1"
1814 # Arguments: ad_run_dist_hooks <hooks> <params>
1818 ad_debug "Starting running distributions hooks: $1"
1821 ad_log "Distribution hooks executed:"
1822 ad_log "----------------------------"
1826 if test '!' -f $i; then
1827 ad_fatal "Dist hook script $i does not exist"
1830 ad_log " sh $i \"$distribution\" \"$dist_version\" \"$package\" \"$am_distdir\" \"$2\""
1831 sh $i "$distribution" "$dist_version" "$package" "$am_distdir" "$2" || exit 1
1835 ad_debug "Ending running distribution hooks"
1838 ###############################################################################
1841 usage="Usage: autodist [options] [distribution] [version] [params]"
1843 Autodist prepares source tree for configuration, compilation and
1844 distribution. Generates Automake.am files from Automake.ad files,
1845 configure.ac file from configure.ad file(s), generates the configure
1846 script by running Autoconf tool, and generates Makefile.in files by
1847 running Automake tool.
1850 -h, --help print this help, then exit
1851 -V, --version print version number, then exit
1852 -v, --verbose verbosely report processing
1853 -d, --distdir <dir> search distributions from <dir>
1854 -s, --distdefs [<dist>] print distribution defines of <dist>, then exit
1855 -i, --init initialize Autodist environment, create default
1856 distribution directory and distribution, then exit
1857 -p, --process <type> <src> [<dst>]
1858 process file <src> into <dst> for distribution,
1859 <type> is 'makefile', 'configure', 'non-source'
1860 or 'source' and defines the type of <src>
1861 -m, --makedist create and package distribution
1862 --gzip create package compressed with gzip (default)
1863 --bzip2 create also package compressed with bzip2
1864 --compress create also package compressed with compress
1865 --zip create also package compressed with zip"
1868 # Process command line arguments
1870 while test $# -gt 0; do
1875 test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
1884 if test $# -eq 0; then
1885 ad_parse_distribution $distribution false
1886 echo "Distribution: ${distribution}" 1>&2;
1888 ad_parse_distribution $1 false
1889 echo "Distribution: ${1}" 1>&2;
1892 echo "Distdefs:" 1>&2;
1905 if test $# -ge 2; then
1908 echo "${usage}" 1>&2;
1937 echo "${usage}" 1>&2;
1939 echo "${help}" 1>&2;
1944 echo "@PACKAGE@ (@PACKAGE_NAME@) $ver" 1>&2;
1945 echo "Written by Pekka Riikonen" 1>&2;
1947 echo "Copyright (C) 2004 - 2007 SILC Project" 1>&2;
1949 This is free software; see the source for copying conditions. There is NO
1950 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. " 1>&2;
1958 echo "${usage}" 1>&2;
1968 ad_log_open "autodist.log"
1970 ad_log "Processing source tree for compilation and configuration"
1971 ad_log "--------------------------------------------------------"
1975 # Parse the requested distribution
1977 if test $# != 0; then
1978 distribution="${1}";
1979 distfile=$distribution
1983 ad_parse_distribution $distribution false
1985 if test $# != 0; then
1986 dist_version="${1}";
1989 ad_log " Distribution: $distribution $dist_version"
1994 ad_debug "Preparing source tree for configuration and compilation..."
1995 ad_debug "Preparing $distribution distribution version $dist_version"
1998 # Create the distribution defines header file
2000 if test "$DISTDEFS"; then
2001 ad_create_distdefs_h
2003 ad_fatal "DISTDEFS not defined in $distdir/autodist.conf"
2006 # Get extra parameters from command line
2012 ad_run_hooks "$pre_hooks" "$@"
2015 # Generate the Makefile.am files from Makefile.ad files
2017 ad_make_makefile_ams
2020 # Generate the configure.ac from configure.ad file(s)
2022 ad_make_configure_ac ./configure.ad
2025 # Process all files with .ad suffix for distribution processing
2030 # Generate configure script
2035 # Generate Makefile.in files
2037 ad_make_makefile_ins
2040 # Create autodist.dist
2042 ad_debug "Creating autodist.dist"
2043 echo "dist:$distfile" > autodist.dist
2044 echo "ver:$dist_version" >> autodist.dist
2045 echo "distdir:$package-$dist_version" >> autodist.dist
2046 echo "params:$@" >> autodist.dist
2051 ad_run_hooks "$post_hooks" "$@"
2053 ad_log "Source tree processed successfully."
2054 ad_debug "Done, now run ./configure and make."