home *** CD-ROM | disk | FTP | other *** search
/ c't freeware shareware 2001 January / CT_SW0101.ISO / pc / software / kommunik / ftp / kmago112.tgz / kmago112.tar / kmago-1.1.2 / admin / conf.change.pl < prev    next >
Perl Script  |  2001-01-17  |  3KB  |  112 lines

  1. #!/usr/bin/perl -w
  2.  
  3. # this script patches a config.status file, to use our own perl script
  4. # in the main loop
  5. # we do it this way to circumvent hacking (and thereby including)
  6. # autoconf function (which are GPL) into our LGPL acinclude.m4.in
  7. # written by Michael Matz <matz@ifh.de>
  8.  
  9. # we have to change two places
  10. # 1. the splitting of the substitutions into chunks of 90 (or even 48 in
  11. #    later autoconf's
  12. # 2. the big main loop which patches all Makefile.in's
  13. use File::Basename;
  14.  
  15. my $ac_aux_dir = dirname($0);
  16. my ($flag);
  17. my $ac_version = 0;
  18. my $vpath_seen = 0;
  19. $flag = 0;
  20.  
  21. while (<>) {
  22. # usage of $flag: 0 -- we have seen nothing yet
  23. #   1 -- we are in (1)
  24. #   2 -- we have ended (1)
  25. #   3 -- we are in (2)
  26. #   4 -- we ended (2)
  27.  
  28.     if ($flag == 4) {
  29.         print;
  30.     } elsif ($flag == 0) {
  31. # 1. begins with (including): "ac_max_sed_\S+\s*=\s*[0-9]+..."
  32. #    ends with (excluding) "CONFIG_FILE=..."
  33. #    in later autoconf (2.14.1) there is no CONFIG_FILES= line,
  34. #    but instead the (2) directly follow (1)
  35.         if (/^\s*ac_max_sed_([a-z]+).*=\s*[0-9]+/ ) {
  36.         $flag = 1;
  37.         if ($1 eq 'lines') {
  38.             $ac_version = 2141;
  39.         } elsif ($1 eq 'cmds') {
  40.             $ac_version = 213;
  41.         }
  42.         # hmm, we don't know the autoconf version, but we try anyway
  43.     } else {
  44.         print;
  45.     }
  46.     } elsif ($flag == 1) {
  47.         if (/^\s*CONFIG_FILES=/ ) {
  48.          print;
  49.          $flag = 2;
  50.     } elsif (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) {
  51.          $flag = 3;
  52.          if ($ac_version != 2141) {
  53.              $ac_version = 2141;
  54.          }
  55.     }
  56.     } elsif ($flag == 2) {
  57. # 2. begins with: "for ac_file in.*CONFIG_FILES"  (the next 'for' after (1))
  58. #    end with: "rm -f conftest.s\*"
  59.     if (/^\s*for\s+ac_file\s+in\s+.*CONFIG_FILES/ ) {
  60.         $flag = 3;
  61.     } else {
  62.         print;
  63.     }
  64.     } elsif ($flag == 3) {
  65.         if (/^\s*rm\s+-f\s+conftest/ ) {
  66.         $flag = 4;
  67.         insert_main_loop();
  68.     } elsif (/^\s*rm\s+-f\s+.*ac_cs_root/ ) {
  69.         $flag = 4;
  70.         insert_main_loop();
  71.         #die "hhhhhhh";
  72.         if ($ac_version != 2141) {
  73.             print STDERR "hmm, don't know autoconf version\n";
  74.         }
  75.     } elsif (/VPATH/ ) {
  76.         $vpath_seen = 1;
  77.     }
  78.     }
  79. }
  80.  
  81. die "wrong input (flag != 4)" unless $flag == 4;
  82. print STDERR "hmm, don't know autoconf version\n" unless $ac_version;
  83.  
  84. sub insert_main_loop {
  85.     print <<EOF;
  86. #echo Doing the fast build of Makefiles -- autoconf $ac_version
  87. if test "x\$ac_cs_root" = "x" ; then
  88.     ac_cs_root=conftest
  89. fi
  90. EOF
  91.     if ($vpath_seen) {
  92.         print <<EOF;
  93. # VPATH subst was seen in original config.status main loop
  94. echo '/^[     ]*VPATH[     ]*=[^:]*\$/d' >> \$ac_cs_root.subs
  95. EOF
  96.     }
  97.     print <<EOF;
  98. rm -f \$ac_cs_root.sacfiles
  99. for ac_file in .. \$CONFIG_FILES ; do
  100.     if test "x\$ac_file" != x..; then
  101.         echo \$ac_file >> \$ac_cs_root.sacfiles
  102.     fi
  103. done
  104. if test -f \$ac_cs_root.sacfiles ; then
  105.     perl $ac_aux_dir/config.pl "\$ac_cs_root" "\$ac_given_srcdir" "\$ac_given_INSTALL"
  106. fi
  107. rm -f \$ac_cs_root.s*
  108.  
  109. EOF
  110.     return;
  111. }
  112.