home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / autoconf-2.10-src.tgz / tar.out / fsf / autoconf / testsuite / lib / common.exp
Text File  |  1996-09-28  |  3KB  |  124 lines

  1. # -*- TCL -*-
  2. # Auxiliary procedures for autoconf tests.
  3. # Copyright (C) 1994 Free Software Foundation, Inc.
  4.  
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2 of the License, or
  8. # (at your option) any later version.
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. # GNU General Public License for more details.
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program; if not, write to the Free Software
  15. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16.  
  17. # Written by David MacKenzie <djm@gnu.ai.mit.edu>.
  18.  
  19. #
  20. # Create a configure.in from a string.
  21. # CONFIG.in is the file to create containing CONTENTS plus boilerplate.
  22. # Return 1 if successful, 0 if an error occurs.
  23. proc autoconf_create {config contents} {
  24.     if [catch {open "$config.in" "w"} hand] {
  25.     error "$config, cannot create $config.in"
  26.     return 0
  27.     }
  28.     puts $hand "AC_INIT(confdummy.in)
  29. $contents
  30. AC_OUTPUT(confdummy)"
  31.     close $hand
  32.  
  33.     if [catch {open "confdummy.in" "w"} hand] {
  34.     error "$config, cannot create confdummy.in"
  35.     return 0
  36.     }
  37.     puts $hand "# This is a dummy file for testing.
  38. srcdir = @srcdir@
  39. # Please ignore this file."
  40.     close $hand
  41.  
  42.     return 1
  43. }
  44.  
  45. # Compile a configure.in into a configure
  46. #  and call error if there's any output (undefined macros, can't
  47. #  find library files, etc.).
  48. proc autoconf_start_plus {configout} {
  49.     global comp_output
  50.  
  51.     set status [autoconf_start $configout]
  52.     if {$status==0} {
  53.     return 0
  54.     }
  55.     # Examine $comp_output.
  56.     if [string match "*is obsolete*" "$comp_output"] then {
  57.     return 1
  58.     }
  59.     if [string match "*allow cross*" "$comp_output"] then {
  60.     return 1
  61.     }
  62.     if ![string match "" "$comp_output"] then {
  63.     fail "$configout, problem with running autoconf"
  64.     return 0
  65.     }
  66.     return 1
  67. }
  68.  
  69. # Execute a configure script and check the output
  70. #  against what it's supposed to be.
  71. # Return 1 if successful so far, 0 if failure already.
  72. proc autoconf_load_plus {args} {
  73.     global exec_output
  74.  
  75.     set status [autoconf_load $args]
  76.     if {$status==0} {
  77.     return 0
  78.     }
  79.     if [string match "*:*" "$exec_output"] then {
  80.     fail "$args, problem with executing"
  81.     return 0
  82.     }
  83.     return 1
  84. }
  85.  
  86. # Remove generated configuration files for test CONFIG.
  87. # Return 1 if successful, 0 if not.
  88. proc autoconf_remove {config} {
  89.     if [catch "exec rm -f $config $config.in [glob -nocomplain conftest* confdummy*] config.status config.cache config.log"] {
  90.     warning "$config output files, cannot remove"
  91.     return 0
  92.     }
  93.     return 1
  94. }
  95.  
  96. # The standard autoconf test: create, compile, run, and remove
  97. # a simple configure script to test a single macro.
  98. # TESTNAME is the name of the macro being tested.
  99. # CONTENTS is the body of the configure script to create and test.
  100. proc autoconf_test {testname contents} {
  101.     if ![autoconf_remove $testname] {
  102.     return 0
  103.     }
  104.     if ![autoconf_create $testname "$contents"] {
  105.     return 0
  106.     }
  107.     if ![autoconf_start_plus $testname] {
  108.     autoconf_remove $testname
  109.     return 0
  110.     }
  111.     if ![autoconf_load_plus $testname] {
  112.     autoconf_remove $testname
  113.     return 0
  114.     }
  115.     if ![autoconf_remove $testname] {
  116.     return 0
  117.     }
  118.  
  119.     pass "$testname"
  120.     return 1
  121. }
  122.