X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=configure.com;h=388ba6b929a010584695e7b23b26637bcff51793;hb=b7dc083c47d05133e90d62e8b587c747dab89267;hp=521221978b95e5393e11707dd28dffec805150de;hpb=e6df7ed16ebd06f5315f3016c00996876580109c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/configure.com b/configure.com index 5212219..388ba6b 100644 --- a/configure.com +++ b/configure.com @@ -39,16 +39,18 @@ $ cat = "type" $ gcc_symbol = "gcc" $ ans = "" $ macros = "" +$ use_vmsdebug_perl = "N" $ use_debugging_perl = "Y" $ C_Compiler_Replace = "CC=" $ Thread_Live_Dangerously = "MT=" $ use_two_pot_malloc = "N" $ use_pack_malloc = "N" $ use_debugmalloc = "N" -$ preload_env = "N" +$ d_secintgenv = "N" +$ use_multiplicity = "N" $ vms_default_directory_name = F$ENVIRONMENT("DEFAULT") -$! max_allowed_dir_depth = 3 ! e.g. [A.B.PERL5_00n] not [A.B.C.PERL5_00n] -$ max_allowed_dir_depth = 2 ! e.g. [FOO.PERL5_00n] not [FOO.BAR.PERL5_00n] +$ max_allowed_dir_depth = 3 ! e.g. [A.B.PERL5_00n] not [A.B.C.PERL5_00n] +$! max_allowed_dir_depth = 2 ! e.g. [FOO.PERL5_00n] not [FOO.BAR.PERL5_00n] $! $ vms_filcnt = F$GETJPI ("","FILCNT") $! @@ -968,16 +970,16 @@ $ got_sub = "false" $ OPEN/READONLY CONFIG 'patchlevel_h' $Patchlevel_h_loop: $ READ/END_Of_File=Close_patch CONFIG line -$ IF ((F$LOCATE("#define PATCHLEVEL",line).NE.F$LENGTH(line)).AND.(.NOT.got_patch)) +$ IF ((F$LOCATE("#define PERL_VERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_patch)) $ THEN $ line = F$EDIT(line,"COMPRESS, TRIM") -$ patchlevel = F$EXTRACT(18,F$LENGTH(line)-18,line) +$ patchlevel = F$ELEMENT(2," ",line) $ got_patch = "true" $ ENDIF -$ IF ((F$LOCATE("SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_sub)) +$ IF ((F$LOCATE("#define PERL_SUBVERSION",line).NE.F$LENGTH(line)).AND.(.NOT.got_sub)) $ THEN $ line = F$EDIT(line,"COMPRESS, TRIM") -$ subversion = F$EXTRACT(18,F$LENGTH(line)-18,line) +$ subversion = F$ELEMENT(2," ",line) $ got_sub = "true" $ ENDIF $ IF (.NOT.got_patch).OR.(.NOT.got_sub) THEN GOTO Patchlevel_h_loop @@ -1561,7 +1563,7 @@ $ IF mydomain.NES."" !no periods in DECnet names like "MYDECNODE::" $ THEN $ rp = "What is your domain name? [''mydomain'] " $ GOSUB myread -$ IF ans THEN mydomain = ans +$ IF ans .nes. "" THEN mydomain = ans $!: translate upper to lower if necessary $ mydomain = F$EDIT(mydomain,"COLLAPSE") $ mylowdomain = F$EDIT(mydomain," LOWERCASE") @@ -1585,7 +1587,7 @@ $ ENDIF $ dflt = "''cf_by@''myhostname'"+"''mydomain'" $ rp = "What is your e-mail address? [''dflt'] " $ GOSUB myread -$ IF ans +$ IF ans .nes. "" $ THEN cf_email = ans $ ELSE cf_email = dflt $ ENDIF @@ -1602,7 +1604,7 @@ $ ENDIF $ dflt = "''cf_email'" $ rp = "Perl administrator e-mail address [''dflt'] " $ GOSUB myread -$ IF ans +$ IF ans .nes. "" $ THEN perladmin = ans $ ELSE perladmin = dflt $ ENDIF @@ -1669,6 +1671,42 @@ $ IF ans.eqs."socketshr" then has_socketshr = "T" $ endif $! $! +$! Ask if they want to build with VMS_DEBUG perl +$ echo "Perl can be built to run under the VMS debugger." +$ echo "You should only select this option if you are debugging" +$ echo "perl itself. This can be a useful feature if you are " +$ echo "embedding perl in a program." +$ echo "" +$ dflt = "N" +$ rp = "Build a VMS-DEBUG version of Perl? [''dflt'] " +$ GOSUB myread +$ if ans.eqs."" then ans = dflt +$ if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y") +$ THEN +$ use_vmsdebug_perl = "Y" +$ macros = macros + """__DEBUG__=1""," +$ ELSE +$ use_vmsdebug_perl = "N" +$ ENDIF +$! +$! Ask if they want to build with MULTIPLICITY +$ echo "The perl interpreter engine can be built in a way that makes it +$ echo "possible for a program that embeds perl into it (and yep, you can +$ echo "do that--it's pretty keen) to have multiple perl interpreters active +$ echo "at once. There is some performance overhead, however, so you +$ echo "probably don't want to choose this unless you're going to be doing +$ echo "funky perl embedding." +$ echo "" +$ dflt = "n" +$ rp = "Build with MULTIPLICITY? [''dflt'] " +$ GOSUB myread +$ if ans.eqs."" then ans = dflt +$ if (f$extract(0, 1, "''ans'").eqs."Y").or.(f$extract(0, 1, "''ans'").eqs."y") +$ THEN +$ use_multiplicity="Y" +$ ELSE +$ use_multiplicity="N" +$ ENDIF $! Ask about threads, if appropriate $ if (Using_Dec_C.eqs."Yes") $ THEN @@ -1708,26 +1746,43 @@ $ ENDIF $ ENDIF $ ENDIF $! -$! Pre-load %ENV? +$! Ask whether they want to use secure logical translation when tainting $ echo "" -$ echo "Because of the way perl fetches the list of logical names -$ echo "for the %ENV hash (we spawn a subprocess that does a -$ echo "SHOW LOGICALS *, which is expensive), we defer fetching it -$ echo "until the first time a program iterates over the %ENV hash. -$ echo "This means things like 'exists($ENV{'SYS$MANAGER'})' will -$ echo "return false unless you've already accessed $ENV{SYS$MANAGER} -$ echo "or done something like a keys %ENV." +$ echo "As Perl starts up, it checks several logical names, such as" +$ echo "PERL5LIB and PERL_ENV_TABLES, which allow you to modify aspects" +$ echo "of its behavior. For additional security, you may limit this" +$ echo "process to executive- and kernel-mode translation when tainting" +$ echo "is enabled. In this case, logical names normally skipped when" +$ echo "tainting is enabled (e.g. PERL5OPTS) are translated as well." +$ echo "If you do not choose to do this, the usual order of access modes" +$ echo "is used for logical name translation." $ echo "" -$ echo "If you choose, perl can populate the %ENV hash at startup. -$ echo "This will exact both a memory penalty (to store the keys) and -$ echo "a time penalty (to spawn the subprocess) every time you invoke -$ echo "perl. Depending on your system, this might not be a big deal. +$ echo "This restriction does not apply to the %ENV hash or to implicit" +$ echo "logical name translation during parsing of file specifications;" +$ echo "these always use the normal sequence of access modes for logical" +$ echo "name translation." $ echo "" $ dflt = "n" -$ rp = "Populate %ENV at startup time? [''dflt'] " +$ rp = "Use secure logical name translation? [''dflt'] " $ GOSUB myread $ if ans.eqs."" then ans="''dflt'" -$ preload_env = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE")) +$ d_secintgenv = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE")) +$! +$! Ask whether they want to default filetypes +$ echo "" +$ echo "When you pass the name of a program to Perl on the command line," +$ echo "it generally doesn't supply any defaults unless the -S command" +$ echo "line switch is specified. In keeping with the VMS tradition of" +$ echo "default file types, however, you can configure Perl to try default" +$ echo "file types of nothing, .pl, and .com, in that order (e.g. typing" +$ echo """$ perl foo"" would cause Perl to look for foo., then foo.pl, and" +$ echo "finally foo.com)." +$ echo "" +$ dflt = "n" +$ rp = "Always use default file types? [''dflt'] " +$ GOSUB myread +$ if ans.eqs."" then ans="''dflt'" +$ d_alwdeftype = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE")) $! $! Ask if they want to use perl's memory allocator $ echo "" @@ -1782,7 +1837,7 @@ $ echo "you might, for example, want to build GDBM_File instead of $ echo "SDBM_File if you have the GDBM library built on your machine $ echo " $ echo "Which modules do you want to build into perl?" -$ dflt = "Fcntl Errno IO Opcode Dumper attrs re Stdio DCLsym B SDBM_File" +$ dflt = "Fcntl Errno IO Opcode Data::Dumper attrs re VMS::Stdio VMS::DCLsym B SDBM_File" $ if Using_Dec_C.eqs."Yes" $ THEN $ dflt = dflt + " POSIX" @@ -1931,7 +1986,7 @@ $! $! Invoke the subconfig piece $! $ echo "" -$ echo4 "Checking the C Run time library" +$ echo4 "Checking the C run-time library" $ dflt = F$ENVIRONMENT("DEFAULT") $ SET DEFAULT [-.vms] $ @subconfigure @@ -1952,11 +2007,25 @@ $ ELSE $ WRITE CONFIG "$! This perl configured & administered by ''perladmin'" $ ENDIF $ WRITE CONFIG "$!" +$ prefix = prefix - "000000." $ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN - prefix = prefix - "]" + ".]" $ WRITE CONFIG "$ define/translation=concealed Perl_Root ''prefix'" -$ WRITE CONFIG "$ perl :== $Perl_Root:[000000]Perl" -$ WRITE CONFIG "$ define PerlShr Perl_Root:[000000]PerlShr.Exe" +$ write config "$ ext = "".exe""" +$ if sharedperl .eqs. "Y" +$ then +$ write config "$ if f$getsyi(""ARCH_NAME"") .nes. ""VAX"" then ext = "".AXE""" +$ endif +$ IF use_vmsdebug_perl .eqs. "Y" +$ then +$ WRITE CONFIG "$ dbgperl :== $Perl_Root:[000000]dbgPerl'ext'" +$ WRITE CONFIG "$ perl :== $Perl_Root:[000000]ndbgPerl'ext'" +$ WRITE CONFIG "$ define dbgPerlShr Perl_Root:[000000]dbgPerlShr'ext'" +$ else +$ WRITE CONFIG "$ perl :== $Perl_Root:[000000]Perl'ext'" +$ WRITE CONFIG "$ define PerlShr Perl_Root:[000000]PerlShr'ext'" +$ endif +$! $ IF (tzneedset) $ THEN $ WRITE CONFIG "$ define SYS$TIMEZONE_DIFFERENTIAL ''tzd'"