I've finished a new version of Configure which splits up the giant script into a bunch of small files and moves all of Configure's files into a new config/ directory. I just need a few guinea pigs^W^Wtesters to make sure it works okay on various systems, especially systems with hint files.
I would send this as a patch, but it moves a lot of files and creates many new directories, so the patch would be huge. Instead, I'm putting a copy of Parrot with the new Configure in it. In a few hours, a 600KB tarball should appear on the CPAN: $CPAN/authors/id/B/BR/BRENTDAX/parrot/parrot-cfg.tar.gz This is a full Parrot distribution with the new Configure. Unpack it to an empty directory, run the normal Configure/make/make test, and report the results. The new Configure is fully functional, except for reconfig, which needs some reworking to work under the new model. A screen paste of one of my Configure sessions is below my sig. It's been tested on Windows and Linux; all tests pass. The directory was last cvs updated a few days ago, so some recent bugs may not be fixed. Special thanks to Melvin--I had been trying to figure out a bug for two days, and he took ten minutes to diagnose the problem. Thanks also to Robert, who pushed me to write this (and then pointed out all the deficiencies in the design :^) ). (And yes, this time Configure *does* have an actual design, described in the ~200 lines of POD at the bottom of Configure.pl.) Share and enjoy. --Brent Dax <[EMAIL PROTECTED]> @roles=map {"Parrot $_"} qw(embedding regexen Configure) blink: Text blinks (alternates between visible and invisible). Conforming user agents are not required to support this value. --The W3C CSS-2 Specification C:\Brent\Visual Studio Projects\Perl 6\parrot-cfg\parrot>perl Configure.pl Parrot Version 0.0.5 Configure 2.0 Copyright (C) 2001-2002 Yet Another Society Hello, I'm Configure. My job is to poke and prod your system to figure out how to build Parrot. I'll also ask a few questions along the way, unless you passed in the '--defaults' flag on the command line. Since you're running this script, you obviously have Perl 5--I'll be pulling some defaults from its configuration. Checking MANIFEST...done. Setting up Configure's data structures...done. Loading platform hints file...done. Okay, I'm going to start by asking you a couple questions about your compiler and linker. Default values are in square brackets; you can hit ENTER to accept them. If you don't understand a question, the default will usually work--they've been intuited from your Perl 5 configuration. What C compiler do you want to use? [cl] How about your linker? [link] What flags should your C compiler receive? [-nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT ] And your linker? [-nologo -nodefaultlib -release -machine:x86] What libraries should your C compiler use? [oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib] Do you want a debugging build of Parrot? [n] Thanks. Now I need a little information on certain types. Same rules as the last section. How big would you like your integers to be? [long] And your floats? [double] What's your native opcode type? [long] Now I have to find out what opcode files you would like to compile into your Parrot. The following opcode files are available: core.ops io.ops obscure.ops rx.ops Which opcode files would you like? [core.ops io.ops rx.ops] Parrot sometimes has experimental systems. I'll now ask about any that currently exist. Answer 'n' unless you know otherwise. Enable experimental networking? [n] Probing for C headers...done. Determining some sizes...done. Computing native byteorder for Parrot's wordsize...done. Figuring out how to pack() Parrot's types...done. Figuring out what formats should be used for sprintf...done. Determining if your C compiler is actually gcc...done. Determining architecture, OS and JIT capability...done. Verifying that the compiler supports function pointer casts...done. Determining if your compiler supports computed goto...done. Generating config.h...done. Writing Parrot::Config module...done. Generating Makefiles...done. Moving platform files into place...done. Okay, we're done! You can now use `make' (or your platform's equivalent to `make') to build your Parrot. After that, you can use `make test' to run the test suite. Happy Hacking, The Parrot Team