I have made some changes in perl script autoscan.
I have added new properties
1. have been added new three command line parameters: 'package name', 'package 
version' and 'bug report address'. These parameters fill the three parameters 
in the macro AC_INIT.
2. has been changed the function 'scan_makefile' - detection of the keywords 
'lib_LIBRARIES' and 'lib_LTLIBRARIES' to generate the macros 
'AC_ENABLE_SHARED', 'AC_DISABLE_SHARED', 'AC_ENABLE_STATIC', 
'AC_DISABLE_STATIC', 'AC_PROG_LIBTOOL' and, may be, 'AC_LIBTOOL_WIN32_DLL'.
3. has been changed the function 'scan_file' - have been added the programs 
'flex' and 'bison'
4. has been corrected the function 'output_libraries'
5. has been changed the function 'output'
        - have been changed the parameters in the macro 'AC_INIT'
        - have been added the macros 'AC_CANONICAL_SYSTEM' and 'AM_INIT_AUTOMAKE'
        - has been added the calling of the function 'output_kind' to generate the 
libtool macros
6. has been corrected the function 'check_configure_ac'
7. has been changed the main function
        - if the file 'configure.ac' does not exist, the script 'autoscan' generates 
the both files 'configure.scan' and 'configure.ac'
8. interface to the libtool macros has been added to the file 
'lib/autoscan/autoscan.pre' at this moment

Milan Znamenacek
-- 
Dipl.Ing. Znamenacek Milan
[EMAIL PROTECTED]
RETIA,a.s.
Prazska 341
Pardubice
53002
Czech Republic
diff -Naur autoconf-2.56/bin/autoscan.in autoconf-new/bin/autoscan.in
--- autoconf-2.56/bin/autoscan.in	Thu Nov  7 14:22:23 2002
+++ autoconf-new/bin/autoscan.in	Fri Nov 29 14:04:20 2002
@@ -39,7 +39,7 @@
 
 # The kind of the words we are looking for.
 my @kinds = qw (function header identifier program
-                makevar librarie);
+                makevar librarie libtool);
 
 # For each kind, the default macro.
 my %generic_macro =
@@ -87,6 +87,10 @@
 my @prepend_include;
 my @include = ('@datadir@');
 
+my $full_package_name = "FULL-PACKAGE-NAME";
+my $package_version = "VERSION";
+my $bug_report_address = "BUG-REPORT-ADDRESS";
+
 # $help
 # -----
 $help = "Usage: $0 [OPTION] ... [SRCDIR]
@@ -101,6 +105,9 @@
   -V, --version       print version number, then exit
   -v, --verbose       verbosely report processing
   -d, --debug         don't remove temporary files
+  -p, --package=name         package name
+  -e, --package-version=ver  package version
+  -b, --bug-report=address   bug report address
 
 Library directories:
   -B, --prepend-include=DIR  prepend directory DIR to search path
@@ -130,7 +137,10 @@
 sub parse_args ()
 {
   getopt ('I|include=s' => \@include,
-	  'B|prepend-include=s' => \@prepend_include);
+	  'B|prepend-include=s' => \@prepend_include,
+	  'p|package=s' => \$full_package_name,
+	  'e|package-version=s' => \$package_version,
+	  'b|bug-report=s' => \$bug_report_address);
 
   die "$me: too many arguments
 Try `$me --help' for more information.\n"
@@ -292,6 +302,10 @@
 # -----------------------------
 sub scan_makefile ($)
 {
+# for LIBTOOL settings
+  my $libtool_static = 0;
+  my $libtool_shared = 0;
+
   my ($filename) = @_;
   push @makefiles, $File::Find::name;
 
@@ -302,6 +316,16 @@
       # Strip out comments.
       s/#.*//;
 
+            # Static libraries.
+      while (s/\blib_LIBRARIES\b/ /)
+	{
+		$libtool_static = 1;
+	}
+      # Static and shared libraries.
+      while (s/\blib_LTLIBRARIES\b/ /)
+	{
+		$libtool_shared = 1;
+	}
       # Variable assignments.
       while (s/\b([a-zA-Z_]\w*)\s*=/ /)
 	{
@@ -326,6 +350,20 @@
 	}
     }
 
+  if($libtool_static || $libtool_shared)
+  {
+	used ('libtool', 'enstatic');
+	if($libtool_shared)
+	{
+		used ('libtool', 'enshared');
+	}
+	else
+	{
+		used ('libtool', 'dishared');
+	}
+	used ('libtool', 'libtool');
+  }
+
   $file->close;
 }
 
@@ -373,16 +411,36 @@
   # Strip a useless leading `./'.
   $File::Find::name =~ s,^\./,,;
 
-  if (/\.[chlym](\.in)?$/)
+  if (/\.[chm](\.in)?$/)
     {
       used 'program', 'cc', $File::Find::name;
       scan_c_file ($_);
     }
-  elsif (/\.(cc|cpp|cxx|CC|C|hh|hpp|hxx|HH|H|yy|ypp|ll|lpp)(\.in)?$/)
+  elsif (/\.l(\.in)?$/)
+    {
+      used 'program', 'flex', $File::Find::name;
+      scan_c_file ($_);
+    }
+  elsif (/\.y(\.in)?$/)
+    {
+      used 'program', 'bison', $File::Find::name;
+      scan_c_file ($_);
+    }
+  elsif (/\.(cc|cpp|cxx|CC|C|hh|hpp|hxx|HH|H)(\.in)?$/)
     {
       used 'program', 'c++', $File::Find::name;
       scan_c_file ($_);
     }
+  elsif (/\.(ll|lpp)(\.in)?$/)
+    {
+      used 'program', 'flex', $File::Find::name;
+      scan_c_file ($_);
+    }
+  elsif (/\.(yy|ypp)(\.in)?$/)
+    {
+      used 'program', 'bison', $File::Find::name;
+      scan_c_file ($_);
+    }
   elsif ((/^((?:GNUm|M|m)akefile)(\.in)?$/ && ! -f "$1.am")
 	 || /^(?:GNUm|M|m)akefile(\.am)?$/)
     {
@@ -483,6 +541,8 @@
   print $file "\n# Checks for libraries.\n";
   foreach my $word (sort keys %{$used{'library'}})
     {
+      push (@{$needed_macros{"$generic_macro{'library'}([$word])"}},
+                 @{$used{'library'}{$word}});
       print $file "# FIXME: Replace `main' with a function in `-l$word':\n";
       print $file "AC_CHECK_LIB([$word], [main])\n";
     }
@@ -504,14 +564,17 @@
      "# Process this file with autoconf to produce a configure script.\n" .
      "\n" .
      "AC_PREREQ(@VERSION@)\n" .
-     "AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)\n");
+     "AC_INIT($full_package_name, $package_version, $bug_report_address)\n" .
+     "AC_CANONICAL_SYSTEM\n");
   if (defined $cfiles[0])
     {
       print $file "AC_CONFIG_SRCDIR([$cfiles[0]])\n";
       print $file "AC_CONFIG_HEADER([config.h])\n";
     }
+  print $file "AM_INIT_AUTOMAKE($full_package_name, $package_version)\n";
 
   output_kind ($file, 'program');
+  output_kind ($file, 'libtool');
   output_kind ($file, 'makevar');
   output_libraries ($file);
   output_kind ($file, 'header');
@@ -565,7 +628,7 @@
     {
       chomp;
       my ($file, $line, $macro, @args) = split (/:/, $_);
-      if ($macro =~ /^AC_CHECK_(HEADER|FUNC|TYPE|MEMBER)S$/)
+      if ($macro =~ /^AC_CHECK_(HEADERS|FUNCS|TYPES|MEMBERS|LIB)$/)
 	{
 	  # To be rigorous, we should distinguish between space and comma
 	  # separated macros.  But there is no point.
@@ -621,6 +684,10 @@
   {
     check_configure_ac ($configure_ac);
   }
+  else
+  {
+	File::Copy::copy("configure.scan", "configure.ac");
+  }
 # This close is really needed.  For some reason, probably best named
 # a bug, it seems that the dtor of $LOG is not called automatically
 # at END.  It results in a truncated file.
diff -Naur autoconf-2.56/lib/autoscan/autoscan.pre autoconf-new/lib/autoscan/autoscan.pre
--- autoconf-2.56/lib/autoscan/autoscan.pre	Tue Nov 12 10:53:31 2002
+++ autoconf-new/lib/autoscan/autoscan.pre	Fri Nov 29 13:27:29 2002
@@ -16,3 +16,10 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 # 02111-1307, USA.
+libtool: initautomake	AM_INIT_AUTOMAKE(\$full_package_name, \$package_version)
+libtool: enshared	AC_ENABLE_SHARED
+libtool: dishared	AC_DISABLE_SHARED
+libtool: enstatic	AC_ENABLE_STATIC
+libtool: distatic	AC_DISABLE_STATIC
+libtool: libtool	AC_PROG_LIBTOOL
+libtool: win32dll	AC_LIBTOOL_WIN32_DLL

Reply via email to