diff options
author | Hans Mulder <hansmu@xs4all.nl> | 1998-06-08 08:38:28 -0700 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-06-10 05:38:11 +0000 |
commit | 97abc6adffcd3efcbaee73cbdad2055b2d06be4f (patch) | |
tree | 5d55b2348ca41dc8d14ac1b58e655f3259d88bee /configure.com | |
parent | cfc02341d853e4bc320d3abf8ac8ac1c7c3ecaa5 (diff) | |
download | perl-97abc6adffcd3efcbaee73cbdad2055b2d06be4f.tar.gz |
A configuration system for VMS perl
Message-Id: <3.0.5.32.19980608153828.00a81ea0@ous.edu>
p4raw-id: //depot/perl@1084
Diffstat (limited to 'configure.com')
-rw-r--r-- | configure.com | 1952 |
1 files changed, 1952 insertions, 0 deletions
diff --git a/configure.com b/configure.com new file mode 100644 index 0000000000..57fb5c567b --- /dev/null +++ b/configure.com @@ -0,0 +1,1952 @@ +$ sav_ver = 'F$VERIFY(0)' +$! SET VERIFY +$! +$! Installation and usage: COPY this file into you perl source tree - at or +$! below where the main MANIFEST. file is located. +$! +$! For example, if you unpacked perl into: [USER.PERL5_00n...] then you will +$! want to: +$! +$! $ COPY Configure.com [USER.PERL5_00n.VMS] +$! +$! Now cd into the tree and execute Configure: +$! +$! $ SET DEFAULT [USER.PERL5_00n] +$! $ @[.vms]Configure +$! +$! or +$! +$! $ SET DEFAULT [USER.PERL5_00n] +$! $ @[.vms]Configure "-des" +$! +$! That's it. If you get into a bind trying to build perl on VMS then +$! definitely read through the README.VMS file as well as the top of the +$! [.VMS]DESCRIP.MMS file. +$! Beyond that send email to VMSPerl@cor.newman.upenn.edu +$! +$! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +$! +$! This CONFIGURE.COM prototype is available from: +$! http://w4.lns.cornell.edu/~pvhp/perl/vms/devel/configure.com +$! send suggestions to: +$! Peter Prymmer pvhp@lns62.lns.cornell.edu or pvhp@forte.com +$! Thank you!!!! +$! +$! Adapted and converted from Larry Wall & Andy Dougherty's +$! "Configure generated by metaconfig 3.0 PL60." +$! (a Bourne sh[ell] script for configuring the installation of perl on VMS) +$! in the perl5.002|3 epoch (spring/summer 1996) +$! with much valuable help from Charles Bailey & +$! the whole VMSPerl crew. +$! +$! SET NOVERIFY +$ sav_ver = F$VERIFY(sav_ver) +$! +$! VMS-isms we will need: +$ echo = "write sys$output " +$ cat = "type" +$ gcc_symbol = "gcc" +$ ans = "" +$ macros = "" +$ C_Compiler_Replace = "CC=" +$ 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] +$! +$ vms_filcnt = F$GETJPI ("","FILCNT") +$! +$!: compute my invocation name +$ me = F$ENVIRONMENT("PROCEDURE") +$! +$! Many null statements (begin with colon ':') in the Bourne shell version of +$! this script serve as comments/placeholders. I have retained some of the ones +$! that will help you compare this .COM file to the sh version - as well as +$! leave placeholders for future improvements to this .COM file. +$! sfn = VMS "skipped for now" +$! +$!: Proper PATH separator !sfn +$!: Proper PATH setting !sfn +$!: Sanity checks !sfn "Say '@''$me''" +$!: On HP-UX, large Configure scripts may exercise a bug in /bin/sh !sfn +$!: Configure runs within the UU subdirectory !->after find MANIFEST +$! <big long list of default values (mostly null)> +$!: We must find out about Eunice early !(?) +$!: list of known cpp symbols, sorted alphabetically !sfn +$! al = al + "..." +$!: default library list !sfn +$! <no hints files in use (yet?)> +$!: Extra object files, if any, needed on this platform. !sfn +$!: Possible local include directories to search. !sfn +$!: Set locincpth to "" in a hint file to defeat local include searches. !sfn +$!locincpth="/usr/local/include /opt/local/include /usr/gnu/include" !sfn +$!locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include" +$!: no include file wanted by default !sfn +$!inclwanted='' !sfn +$!: Possible local library directories to search. !sfn +$!loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib" !sfn +$!loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib" !sfn +$!: general looking path for locating libraries !sfn +$!glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib" !sfn +$!glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small" !sfn +$!glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib" !sfn +$!: Private path used by Configure to find libraries. Its value !sfn +$!: is prepended to libpth. This variable takes care of special !sfn +$!: machines, like the mips. Usually, it should be empty. !sfn +$!plibpth='' !sfn +$!: full support for void wanted by default !sfn +$!defvoidused=15 !sfn +$!: List of libraries we want. !sfn +$!libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl' !sfn +$!libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt" !sfn +$!libswanted="$libswanted ucb bsd BSD PW x" !sfn +$!: We probably want to search /usr/shlib before most other libraries. !sfn +$!: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. !sfn +$!glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` !sfn +$!glibpth="/usr/shlib $glibpth" !sfn +$!: Do not use vfork unless overridden by a hint file. !sfn +$!usevfork=false !sfn +$!: script used to extract .SH files with variable substitutions !sfn +$!: produce awk script to parse command line options !sfn +$!sfn (assume no sed awk) see below +$!: process the command line options +$! +$!: set up default values +$ fastread="" +$ reuseval="false" +$ config_sh="" +$ alldone="" +$ error="" +$ silent="" +$ extractsh="" +$ override="" +$ knowitall="" +$ Using_Dec_C = "" +$ Using_Vax_C = "" +$ Using_Gnu_C = "" +$ Dec_C_Version = "" +$ use_threads = "F" +$! +$!: option parsing +$ IF (P1 .NES. "") +$ THEN !one or more switches was thrown +$ i = 1 +$ bang = 0 +$Param_loop: +$ IF (P'i'.NES."") THEN bang = bang + 1 +$ i = i + 1 +$ IF (i.LT.9) THEN GOTO Param_loop !DCL allows P1..P8 +$! +$ i = 1 +$Opt_loop: +$ IF (F$EXTRACT(0,1,P'i') .EQS. "-") THEN P'i' = P'i' - "-" +$ IF (F$EXTRACT(0,1,P'i') .EQS. "/") THEN P'i' = P'i' - "/" +$Remove_quotation_mark: +$ P'i' = P'i' - """" +$ IF F$LOCATE("""",P'i') .LT. F$LENGTH(P'i') THEN GOTO Remove_quotation_mark +$ gotopt = "f" !"alse" +$ gotshortopt = "f" !"alse" +$ IF (F$EXTRACT(0,1,P'i') .EQS. "d") +$ THEN +$ fastread = "yes" +$ gotopt = "t" !"rue" +$ P'i' = P'i' - "d" +$ gotshortopt = "t" !"rue" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "e") +$ THEN +$ alldone = "cont" +$ gotopt = "t" +$ P'i' = P'i' - "e" +$ gotshortopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "f") !"-f") +$ THEN +$ P'i' = P'i' - "f" +$ config_sh = P'i' +$ IF (F$SEARCH(config_sh).NES."") +$ THEN +$ test = F$FILE_ATTRIBUTES(config_sh,"PRO") +$ IF (F$LOCATE("R",test).NE.F$LENGTH(test)) +$ THEN +$ CONTINUE !at this point check UIC && if test allows... +$ !to be continued ? +$ ELSE +$ echo "''me': cannot read config file ''config_sh'." +$ error="true" +$ ENDIF +$ ELSE +$ echo "''me': cannot read config file ''config_sh'." +$ error="true" +$ ENDIF +$ gotopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "h") +$ THEN +$ error = "true" +$ gotopt = "t" +$ P'i' = P'i' - "h" +$ gotshortopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "r") +$ THEN +$ reuseval = "true" +$ gotopt = "t" +$ P'i' = P'i' - "r" +$ gotshortopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "s") +$ THEN +$ silent = "true" +$ gotopt = "t" +$ P'i' = P'i' - "s" +$ gotshortopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "E") !"-E") +$ THEN +$ alldone = "exit" +$ gotopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "K") !"-K") +$ THEN +$ knowitall = "true" +$ gotopt = "t" +$ P'i' = P'i' - "K" +$ gotshortopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "O") +$ THEN +$ override = "true" +$ gotopt = "t" +$ P'i' = P'i' - "O" +$ gotshortopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "S") !"-S") +$ THEN +$ extractsh = "true" !VMS? +$ gotopt = "t" +$ P'i' = P'i' - "S" +$ gotshortopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "D") !"-D") +$ THEN +$ P'i' = P'i' - "D" +$!Hmm.. this part needs work +$! P'i' +$ IF (F$LOCATE("=",P'i') .EQ. F$LENGTH(P'i')) +$ THEN +$ P'i' = "define" +$ ELSE +$ IF (F$LOCATE("=",P'i') .EQ. (F$LENGTH(P'i') - 1)) +$ THEN +$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE") +$ echo "''me': use '-Usymbol=val' not '-Dsymbol='." +$ echo "''me': ignoring -D",P'i' +$ ELSE +$!Hmm.. this part needs work +$! 'F$EXTRACT(0,F$LOCATE("=",P'i'),P'i')' = - +$! 'F$EXTRACT(F$LOCATE("=",P'i'),P'i'),F$LENGTH(P'i'),P'i')' +$ ENDIF +$ ENDIF +$ ECHO "P''i' =>",P'i',"<=" !Diag +$ gotopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "U") !"-U") +$ THEN +$ P'i' = P'i' - "U" +$ IF (F$LOCATE("=",P'i') .EQ. F$LENGTH(P'i')) +$ THEN +$ P'i' = "" +$ ELSE +$ IF (F$LOCATE("=",P'i') .LT. (F$LENGTH(P'i') - 1)) +$ THEN +$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE") +$ echo "''me': use '-Dsymbol=val' not '-Usymbol=val'." +$ echo "''me': ignoring -U",P'i' +$ ELSE +$ P'i' = "undef" +$ ENDIF +$ ENDIF +$ ECHO "P''i' =>",P'i',"<=" !Diag +$ gotopt = "t" +$ ENDIF +$ IF (F$EXTRACT(0,1,P'i') .EQS. "V") +$ THEN +$ me = F$PARSE(me,,,"NAME") + F$PARSE(me,,,"TYPE") +$ echo "''me' generated by an unknown version of EDT." +$ STOP +$ EXIT !0 +$ ENDIF +$ IF .NOT.gotopt +$ THEN +$ echo "''me': unknown option ",P'i' +$ error = "true" +$ ENDIF +$ IF (F$LENGTH(P'i').GT.0).AND.(gotshortopt) THEN i = i - 1 !clustered switch +$ i = i + 1 +$ IF (i .LT. (bang + 1)) THEN GOTO Opt_loop +$! +$ ENDIF ! (P1 .NES. "") +$! +$ IF (error) +$ THEN +$ me = F$PARSE(me,,,"DIRECTORY")+ F$PARSE(me,,,"NAME") +$ echo "Usage: @''me' [-dehrEKOSV] [-fconfig.sh] [-Dsymbol] [-Dsymbol=value]" +$ echo " [-Usymbol] [-Usymbol=]" +$ TYPE SYS$INPUT + "-d" : use defaults for all answers. + "-e" : go on without questioning past the production of config.sh. * + "-f" : specify an alternate default configuration file. + "-h" : print this help message and exit (with an error status). + "-r" : reuse C symbols value if possible (skips costly nm extraction).* + "-s" : silent mode, only echoes questions and essential information. + -"D" : define symbol to have some value: * + -"Dsymbol" symbol gets the value 'define' + -"Dsymbol=value" symbol gets the value 'value' + -E : stop at the end of questions, after having produced config.sh. * + -K : do not use unless you know what you are doing. + -O : let -D and -U override definitions from loaded configuration file. * + -S : perform variable substitutions on all .SH files (can mix with -f) * + -"U" : undefine symbol: * + -"Usymbol" symbol gets the value 'undef' + -"Usymbol=" symbol gets completely empty + -V : print version number and exit (with a zero status). +$ echo "%Config-I-VMS, lower case switches must be enclosed" +$ echo "-Config-I-VMS, in double quotation marks, e.g.:" +$ echo "-Config-I-VMS, @Configure ""-des""" +$ echo "-Config-I-VMS, * indicates switch may not be fully implemented for VMS." +$ SET DEFAULT 'vms_default_directory_name' !be kind rewind +$ STOP +$ EXIT 3 ! $STATUS = "%X00000003" (informational) +$ ENDIF +$! +$ GOTO Check_silence +$! +$Shut_up: +$ STDOUT = F$TRNLNM("SYS$OUTPUT") +$ DEFINE SYS$OUTPUT "_NLA0:" +$ echo4 = "write STDOUT " +$ cat4 = "TYPE/OUTPUT=''STDOUT'" +$ open/write STDOUT 'STDOUT' +$ RETURN +$! +$Check_silence: +$ IF (silent) +$ THEN +$ GOSUB Shut_up +$ ELSE +$ echo4 = "write SYS$OUTPUT " +$ cat4 = "TYPE" +$ ENDIF +$! +$!: run the defines and the undefines, if any, but leave the file out there... +$! Unfortunately Configure.COM in DCL is not yet set up to do this - +$! maybe someday +$! +$!: set package name +$ package = "perl5" +$! +$!: Eunice requires " " instead of "", can you believe it +$ echo "" +$!: Here we go... +$ echo "Beginning of configuration questions for ''package'." +$ echo "" +$! +$!: Some greps do not return status, grrr. +$ contains = "SEARCH" +$! +$!: first determine how to suppress newline on echo command !cant DCL is record oriented +$! echo "Checking ''echo' to see how to suppress newlines..." +$! echo "giving up..." +$! echo "The star should be here-->*" +$! +$!: Now test for existence of everything in MANIFEST +$ echo "" +$ echo4 "First let's make sure your kit is complete. Checking..." +$ manifestfound = "" +$ miss_list = "" +$! Here I assume we are in the [foo.PERL5xxx.VMS...] tree +$! because the search routine simply does set def [-] if necessary. +$ file_2_find = "MANIFEST" !I hope this one is not in [foo.PERL5xxx.VMS...] +$Research_manifest: +$ manifestfound = F$SEARCH(file_2_find) +$ IF (manifestfound .EQS. "") +$ THEN +$ IF F$PARSE(F$ENVIRONMENT("DEFAULT"),,,"DIRECTORY",).NES."[000000]" +$ THEN +$ SET DEFAULT [-] +$ GOTO Research_manifest +$ ELSE +$ echo "" +$ echo "There is no MANIFEST file. I hope your kit is complete !" +$ miss_list = "" +$ GOTO Beyond_manifest +$ ENDIF +$ ELSE +$! MANIFEST. has been found and we have set def'ed there - +$! time to bail out before it's too late. +$ IF (F$ELEMENT(max_allowed_dir_depth,".",F$ENVIRONMENT("Default")).nes.".") +$ THEN +$ TYPE SYS$INPUT: +%Config-E-VMS, ERROR: + Sorry! It apears as though your perl build sub-directory is already too + deep into the VMS file system. Please try moving stuff into a shallower + directory (or altering the "max_allowed_dir_depth" parameter). +$ echo4 "ABORTING..." +$ SET DEFAULT 'vms_default_directory_name' !be kind rewind +$ STOP +$ EXIT !2 !$STATUS = "%X00000002" (error) +$ ENDIF +$! +$! after finding MANIFEST let's create (but not yet enter) the UU subdirectory +$! +$ IF (manifestfound .NES. "") +$ THEN +$ IF ( F$SEARCH("UU.DIR").EQS."" ) +$ THEN +$ CREATE/DIRECTORY [.UU] +$ ELSE +$ IF ( F$SEARCH("[.UU]*.*").NES."" ) THEN DELETE/NOLOG [.UU]*.*;* +$ ENDIF +$!: Configure runs within the UU subdirectory +$ SET DEFAULT [.UU] +$! +$! a little redundancy never hurt anybody? +$ file_2_find = "[-]" + file_2_find +$ manifestfound = F$SEARCH(file_2_find) +$! +$ OPEN/WRITE MISSING MISSING. +$!change to "FALSE" if you wish to skip the manifest search +$!(which after all is rather slow in DCL :-) +$ IF ("TRUE") +$ THEN +$ OPEN/READ CONFIG 'manifestfound' +$Read_loop_manifest: +$ READ/END_OF_FILE = Done_manifest CONFIG line +$! This algorithm turns "foo/bar/baz.c" into "[.foo.bar]baz.c" +$! pvhp@lns62.lns.cornell.edu 10-JUN-1996 20:31:46 +$! 2-MAR-1998 15:46:11 Improved to turn "foo/bar/baz.c.buz" +$! into "[.foo.bar]baz.c_buz as happens with vmstar and unzip +$ line = F$EDIT(line,"TRIM, COMPRESS") +$ file_2_find = F$EXTRACT(0,F$LOCATE(" ",line),line) +$ IF F$LOCATE("/",file_2_find) .NE. F$LENGTH(file_2_find) +$ THEN +$Re_strip_line_manifest: +$ loca = F$LOCATE("/",file_2_find) +$ ante = F$EXTRACT(0,loca,file_2_find) +$ post = F$EXTRACT(loca,F$LENGTH(file_2_find),file_2_find) +$ test_this = ante + "." + (post - "/") +$ IF F$LOCATE("/",test_this) .NE. F$LENGTH(test_this) +$ THEN +$ file_2_find = ante + "." + (post - "/") +$ GOTO Re_strip_line_manifest +$ ELSE +$ file_2_find = ante + "]" + (post - "/") +$ ENDIF +$ file_2_find = "[-."+file_2_find +$ ELSE +$ file_2_find = "[-]" + file_2_find +$ ENDIF +$! +$ dirname = F$EXTRACT(0,F$LOCATE("]",file_2_find),file_2_find) + "]" +$ file_2_find = file_2_find - dirname +$ dots = 0 +$Dot_loop: +$ dot_ele = F$ELEMENT(dots,".",file_2_find) +$ IF dot_ele .EQS. "." THEN GOTO Eo_dot_loop +$ IF dots .eq. 0 +$ THEN basename = f$extract(0,f$locate(".",file_2_find),file_2_find) + "." +$ ELSE basename = basename + dot_ele + "_" +$ ENDIF +$ dots = dots + 1 +$ GOTO dot_loop +$Eo_dot_loop: +$ IF (((f$length(file_2_find)+1) .eq. f$length(basename)) .and. - + (f$extract(f$length(basename)-1,1,basename) .eqs. "_")) THEN - + basename = f$extract(0,f$length(basename)-1,basename) +$ file_2_find = dirname + basename +$! +$ found = F$SEARCH(file_2_find) +$ IF (found .EQS. "") +$ THEN +$ WRITE MISSING file_2_find +$ IF ((F$LENGTH(miss_list)+F$LENGTH(file_2_find)).LT.250) +$ THEN +$ miss_list = miss_list + "," + file_2_find +$ ENDIF +$ ENDIF +$ GOTO Read_loop_manifest +$Done_manifest: +$ CLOSE CONFIG +$ ENDIF !"TRUE" +$ CLOSE MISSING +$ ENDIF ! (manifestfound .NES. "") +$Beyond_manifest: +$ IF (miss_list .NES. "") +$ THEN +$ echo "Some of the files not found include:" +$ cat4 MISSING. +$ ENDIF +$ IF ((miss_list .NES. "").OR.(manifestfound .EQS. "")) +$ THEN +$ TYPE SYS$INPUT: + +THIS PACKAGE SEEMS TO BE INCOMPLETE. + +You have the option of continuing the configuration process, despite the +distinct possibility that your kit is damaged, by typing 'y'es. If you +do, don't blame me if something goes wrong. I advise you to type 'n'o +and contact the author (pvhp@lns62.lns.cornell.edu). + +$ READ SYS$COMMAND/PROMPT="Continue? [n] " ans +$ IF ans +$ THEN +$ echo4 "Continuing..." +$ ELSE +$ echo4 "ABORTING..." +$ GOTO Clean_up +$ ENDIF +$ ELSE +$ echo4 "Looks good..." +$ DELETE/NOLOG MISSING.; +$ ENDIF ! (miss_list .NES. "") +$ ENDIF ! (manifestfound .EQS. "") ELSE +$! +$! after finding MANIFEST (see above) +$!: Configure runs within the UU subdirectory +$! +$!: compute the number of columns on the terminal for proper question formatting +$! (sfn, will assume 80-ish) +$! +$!: set up the echo used in my read !sfn +$!: now set up to do reads with possible shell escape and default assignment !sfn +$ GOTO Beyond_myread +$! +$myread: +$ ans = "" +$ If (fastread) +$ Then +$ echo4 "''rp'" +$ Else +$ If (silent) +$ Then +$ READ SYS$COMMAND/PROMPT="''rp'" ans +$ Else +$ echo "" +$ READ SYS$COMMAND/PROMPT="''rp'" ans +$ Endif +$ Endif +$ RETURN +$! +$Beyond_myread: +$! +$!: create .config dir to save info across Configure sessions +$ IF ( F$SEARCH("[-]CONFIG.DIR").EQS."" ) +$ THEN +$ CREATE/DIRECTORY [-.CONFIG] +$ OPEN/WRITE CONFIG [-.CONFIG]README. +$ WRITE CONFIG - + "This directory created by Configure to save information that should" +$ WRITE CONFIG - + "persist across sessions." +$ WRITE CONFIG "" +$ WRITE CONFIG - + "You may safely delete it if you wish." +$ CLOSE CONFIG +$ ENDIF +$! +$!: general instructions +$ needman = "true" +$ firsttime = "true" +$ user = F$EDIT(F$GETJPI("","USERNAME"),"TRIM,COLLAPSE") +$ IF .NOT.(F$SEARCH("[-.CONFIG]INSTRUCT.").EQS."") +$ THEN +$ messages = F$ENVIRONMENT("MESSAGE") +$ SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT !sorry :-( +$ contains /NOOUTPUT [-.CONFIG]INSTRUCT. 'user' +$ IF .NOT.($status.EQ.%X08D78053) +$ THEN +$ firsttime="" +$ dflt = "n" +$ rp = "Would you like to see the instructions? [''dflt'] " +$ GOSUB myread +$ if .NOT.ans THEN needman="" +$ ENDIF +$ SET MESSAGE 'messages' !hope you made it here :-) +$ ENDIF +$ if (fastread.AND.silent.AND.(alldone.eqs."cont")) THEN needman="" +$! +$ IF (needman) +$ THEN +$ TYPE SYS$INPUT: + +This installation shell script will examine your system and ask you questions +to determine how the perl5 package should be installed. If you get +stuck on a question, you may use a ^C or ^Y shell escape to STOP this +process, edit something, then restart this process as you just did. +Many of the questions will have default answers in square +brackets; typing carriage return will give you the default. + +$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans +$ TYPE SYS$INPUT: + +In a hurry? You may run '@Configure -d'. This will bypass nearly all +the questions and use the computed defaults (or the previous answers provided +there was already a config.sh file). Type '@Configure -h' for a list of +options. + +$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans +$ TYPE SYS$INPUT: + +Much effort has been expended to ensure that this shell script will +run on any VMS system. If despite that it blows up on yours, your +best bet is to edit Configure.com and @ it again. Whatever problems +you have with Configure.com, let me (sugalskd@ous.edu) know how I blew +it. + +$!This installation script affects things in two ways: +$! +$!1) it may do direct variable substitutions on some of the files included +$! in this kit. +$!2) it builds a config.h file for inclusion in C programs. You may edit +$! any of these files as the need arises after running this script. +$! +$!If you make a mistake on a question, there is no easy way to back up to it +$!currently. +$! +$ READ SYS$COMMAND/PROMPT="Type carriage return to continue " ans +$ IF (F$SEARCH("[-.CONFIG]INSTRUCT.").EQS."") +$ THEN +$ OPEN/WRITE CONFIG [-.CONFIG]INSTRUCT. +$ WRITE CONFIG user +$ CLOSE CONFIG +$ ENDIF +$ ENDIF !(needman .EQS. "true") +$! +$!: see if sh knows # comments !sfn +$ sharpbang = "$ " +$!: figure out how to guarantee sh startup !sfn +$!: find out where common programs are !sfn +$!loclist="awk/cat/comm/cp/echo/expr/find/grep/ln/ls/mkdir/rm/sed/sort/touch/tr/uniq" +$!trylist="Mcc/byacc/cpp/csh/date/egrep/less/line/more/nroff/perl/pg/sendmail/test/uname" +$! echo "I don't know where '$file' is, and my life depends on it." +$! echo "Go find a public domain implementation or fix your PATH setting!" +$! echo "" +$! echo "Don't worry if any of the following aren't found..." +$!: determine whether symbolic links are supported !sfn +$!: see whether [:lower:] and [:upper:] are supported character classes !sfn +$!: set up the translation script tr, must be called with ./tr of course !sfn +$! +$!: Try to determine whether config.sh was made on this system +$!: Get old answers from old config file if Configure was run on the +$!: same system, otherwise use the hints. +$ config_sh_es = "''config_sh'/[-]config.sh/[-.vms]config.vms/" +$ i = 0 +$ max = 3 +$Config_sh_look: +$ config_sh = F$ELEMENT(i,"/",config_sh_es) +$ i = i + 1 +$ IF (config_sh.NES."/").AND.(config_sh.NES."") +$ THEN +$ configshfound = F$SEARCH(config_sh) +$ IF (configshfound.NES."") THEN GOTO Config_sh_found +$ ENDIF +$ IF (i.LT.max) THEN GOTO Config_sh_look +$ IF (configshfound.EQS."") THEN GOTO Beyond_config_sh +$Config_sh_found: +$ echo "" +$ echo "Fetching default answers from ''config_sh'..." +$!we actually do not have "hints/" for VMS +$! TYPE SYS$INPUT: +$! +$!First time through, eh? I have some defaults handy for the following systems: +$! +$! echo " ","VMS_VAX" +$! echo " ","VMS_AXP" +$! : Now look for a hint file osname_osvers, unless one has been +$! : specified already. +$! TYPE SYS$INPUT: +$! +$!You may give one or more space-separated answers, or "none" if appropriate. +$!If your OS version has no hints, DO NOT give a wrong version -- say "none". +$! +$! READ SYS$COMMAND/PROMPT="Which of these apply, if any? " ans +$! +$Beyond_config_sh: +$! +$!: Restore computed paths !sfn +$! +$! genconfig.pl has "osname='VMS'" +$ osname = F$EDIT(F$GETSYI("NODE_SWTYPE"),"COLLAPSE") +$! %Config-I-VMS, a necessary error trap (could be PC running VCL) +$! +$ IF (osname .NES. "VMS") +$ THEN +$ echo4 "Hmm.. I wonder what ''osname' is (?)" +$ TYPE SYS$INPUT: + +%Config-E-VMS, ERROR: + + Err, you do not appear to be running VMS! + This package is intended to Configure the building of Perl for VMS. + +$ READ SYS$COMMAND/PROMPT="Continue anyway? [n] " ans +$ IF ans +$ THEN +$ echo4 "Continuing..." +$ ELSE +$ echo4 "ABORTING..." +$ SET DEFAULT 'vms_default_directory_name' !be kind rewind +$ STOP +$ EXIT 2 !$STATUS = "%X00000002" (error) +$ ENDIF +$ ELSE !we are on VMS huzzah! +$ IF .NOT.silent +$ THEN TYPE SYS$INPUT: + +Configure uses the operating system name and version to set some defaults. +The default value is probably right if the name rings a bell. Otherwise, +since spelling matters for me, either accept the default or answer "none" +to leave it blank. +$ ENDIF +$ rp = "Operating system name? [''osname'] " +$ GOSUB myread +$ IF ans.nes."" +$ THEN +$ IF (ans.NES.osname) !.AND.knowitall +$ THEN +$ echo4 "I'll go with ''osname' anyway..." +$ ENDIF +$ ENDIF +$ ENDIF !(osname .NES./.EQS. "VMS") +$! +$!: who configured the system +$! see 'user' above. +$ cf_by = F$EDIT(user,"LOWERCASE") +$! cf_time = F$CVTIME() !superceded by procedure below +$ osvers = F$GETSYI("VERSION") +$! +$! Peter Prymmer has seen: +$! "SYS$TIMEZONE_DIFFERENTIAL" = "-46800" (sic) +$! "SYS$TIME_ZONE" = "EDT" +$! +$! Charles Lane recommended: +$! "SYS$TIMEZONE_DIFFERENTIAL" = "-14400" +$! "NEWS_TIMEZONE" = "-0500" +$! "ST_TIMEZONE" = "EDT" +$! "JAN_TIME_ZONE" = "EST " +$! "MULTINET_TIMEZONE" = "EST" +$! "DAYLIGHT_SAVINGS" = "1" +$! +$! Charles Bailey recommends (in ANU NEWS Doc Jan 1995): +$! "PMDF_Timezone" +$! "Multinet_Timezone" +$! "TCPware_Timezone" +$! "WIN$Time_Zone" +$! +$! This snippet o' DCL returns a string in default Unix `date` format, +$! and it will prompt to set SYS$TIMEZONE_DIFFERENTIAL. +$! Peter Prymmer pvhp@lns62.lns.cornell.edu +$! +$ MIN_TZO = -840 !units are minutes here +$ MAX_TZO = 840 +$! +$ wkday = F$EXTRACT(0,3,F$CVTIME(,,"WEEKDAY")) +$ monn = F$CVTIME(,,"MONTH") +$ mday = F$EXTRACT(8,2,F$CVTIME(,,"DATE")) +$ hour = F$CVTIME(,,"HOUR") +$ min = F$CVTIME(,,"MINUTE") +$ sec = F$CVTIME(,,"SECOND") +$ year = F$CVTIME(,,"YEAR") +$! +$ months = "/Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec/" +$ i = 0 +$Mon_loop: +$ i = i + 1 +$ mon = F$ELEMENT(i,"/",months) +$ IF i.LT.monn THEN GOTO Mon_loop +$! +$ tzneedset = "t" +$ systz = F$TRNLNM("SYS$TIMEZONE_DIFFERENTIAL") +$ IF systz.NES."" +$ THEN +$ tzhour = F$INTEGER(systz)/3600 +$ tzmins = F$INTEGER(systz)/60 +$ tzminrem = tzmins - tzhour*60 +$ IF tzminrem.lt.0 THEN tzminrem = -1*tzminrem !keeps !2ZL happy +$ IF tzhour.ge.0 +$ THEN signothetime = "+" +$ IF tzhour.EQ.0.AND.tzminrem.EQ.0 +$ THEN direction = "on GMT/" +$ ELSE direction = "east of " +$ ENDIF +$ ELSE signothetime = "-" +$ tzhour = -1*tzhour !keeps !UL happy +$ direction = "west of " +$ ENDIF +$ echo "" +$ echo "%Config-I-VMS," +$ echo "According to the setting of your ""SYS$TIMEZONE_DIFFERENTIAL"" (= ''systz')" +$ IF tzminrem.ne.0 +$ THEN +$ tzspan = "''tzhour' hours & ''tzminrem' minutes" +$ ELSE +$ tzspan = "''tzhour' hours" +$ ENDIF +$ dflt = "y" +$ echo "Your system is ''tzspan' ''direction'UTC in England." +$ rp = "%Config-I-VMS, (''systz') Is this UTC Time Zone Offset correct? [''dflt'] " +$ GOSUB myread +$ IF ans.OR.(ans.EQS."") +$ THEN +$ tzneedset = "f" +$ tzd = systz +$ GOTO Beyond_TimeZone +$ ENDIF +$ ELSE +$ echo "" +$ echo4 "%Config-I-VMS," +$ echo4 """SYS$TIMEZONE_DIFFERENTIAL"" does not appear to be DEFINEd on your system" +$ ENDIF +$! +$TZSet: +$ echo "" +$ echo "Please tell me in hh:mm form what time offset from GMT/UTC in England" +$ echo "you are. As an example Eastern (US) Standard Time is -5:00 offset, but" +$ echo "Eastern Daylight Time (summer) is -4:00 offset." +$ dflt = "0:00" +$ rp = "Enter the Time Zone offset: [''dflt'] " +$ GOSUB myread +$ ans = F$Edit(ans,"collapse,trim,uncomment,upcase") +$ IF ans.EQS."" THEN ans = dflt +$ tzhour = F$ELEMENT(0,":","''ans'") !first +$ IF tzhour.EQS."" THEN tzhour = 0 +$ tzhour = F$INTEGER(tzhour) +$ tzminrem = F$ELEMENT(1,":","''ans'") !second +$ IF tzminrem.NES."" +$ THEN +$ tzminrem = F$INTEGER(tzminrem) +$ IF F$EXTRACT(0,1,"''ans'") .EQS. "-" THEN tzminrem = tzminrem * -1 +$ ELSE +$ tzminrem = 0 +$ ENDIF +$ tzmins = tzhour*60 + tzminrem +$ tzd = F$STRING(tzmins*60) +$ IF tzhour .GE. 0 +$ THEN +$ signothetime = "+" +$ ELSE +$ tzhour = -1*tzhour !keeps !UL happy +$ signothetime = "-" +$ ENDIF +$ IF (tzmins.GT.MAX_TZO).OR.(tzmins.LT.MIN_TZO) +$ THEN +$ echo "" +$ echo "%Config-W-VMS-TIMERANGE, Response must be in the range -14:00 to 14:00." +$ goto TZSet +$ ENDIF +$! +$Beyond_TimeZone: +$ tz = f$fao("UTC!AS!UL:!2ZL",signothetime,tzhour,tzminrem) +$ cf_time = "''wkday' ''mon' ''mday' ''hour':''min':''sec' ''tz' ''year'" +$! +$!: determine the architecture name +$! genconfig.pl has either archname='VMS_AXP' or 'VMS_VAX' +$! +$ IF (F$GETSYI("HW_MODEL") .LT. 1024) +$ THEN +$ archname = "VMS_VAX" +$ ELSE +$ archname = "VMS_AXP" +$ ENDIF +$ rp = "What is your architecture name? [''archname'] " +$ GOSUB myread +$ IF ans.NES."" +$ THEN +$ ans = F$EDIT(ans,"COLLAPSE, UPCASE") +$ IF (ans.NES.archname) !.AND.knowitall +$ THEN +$ echo4 "I'll go with ''archname' anyway..." +$ ENDIF +$ ENDIF +$ IF (archname.EQS."VMS_AXP") +$ THEN +$ dflt = "N" +$ rp = "Are you sharing your PERL_ROOT with a VAX? [''dflt'] " +$ GOSUB myread +$ if ans.NES."" +$ THEN +$ ans = F$EDIT(ans,"COLLAPSE, UPCASE") +$ ENDIF +$ IF (ans.NES."Y") +$ THEN +$ sharedperl = "N" +$ ELSE +$ sharedperl = "Y" +$ macros = macros + """AXE=1""," +$ ENDIF +$ ELSE +$ sharedperl = "N" +$ ENDIF +$! +$!: is AFS running? !sfn +$!: decide how portable to be. Allow command line overrides. !sfn +$!: set up shell script to do ~ expansion !sfn +$!: expand filename !sfn +$!: now set up to get a file name !sfn +$! +$ vms_skip_install = "true" +$ dflt = "y" +$! echo "" +$ rp = "%Config-I-VMS, Do you wish to skip the """"where install"""" questions? [''dflt'] " +$ GOSUB myread +$ IF (.NOT.ans).AND.(ans.NES."") THEN vms_skip_install = "false" +$ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]" +$ prefix = f$parse(prefix,,,,"NO_CONCEAL") - "][" - ".;" +$ prefix = prefix - "]" + ".]" +$ IF (.NOT.vms_skip_install) +$ THEN +$!: determine root of directory hierarchy where package will be installed. +$ dflt = "default" +$ IF .NOT.silent +$ THEN +$ echo "" +$ echo "By default, ''package' will be installed in ''dflt'/bin, manual" +$ echo "pages under ''dflt'/man, etc..., i.e. with ''dflt' as prefix for" +$ echo "all installation directories. Typically set to /usr/local, but you" +$ echo "may choose /usr if you wish to install ''package' among your system +$ ENDIF +$ IF .NOT.silent +$ THEN TYPE SYS$INPUT: +binaries. If you wish to have binaries under /bin but manual pages +under /usr/local/man, that's ok: you will be prompted separately +for each of the installation directories, the prefix being only used +to set the defaults. +$ ENDIF +$ dflt = prefix +$ rp = "Installation prefix to use? [ ''dflt' ] " +$ GOSUB myread +$ IF ans.NES."" +$ THEN +$ prefix = ans +$ IF F$LOCATE(".]",ans) .EQ. F$LENGTH(ans) THEN prefix = prefix - "]" + ".]" +$ ELSE +$ prefix = dflt +$ ENDIF +$! +$!: set the prefixit variable, to compute a suitable default value +$! +$!: determine where private library files go +$!: Usual default is /usr/local/lib/perl5. Also allow things like +$!: /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant. +$ IF .NOT.silent +$ THEN TYPE SYS$INPUT: + +There are some auxiliary files for perl5 that need to be put into a +private library directory that is accessible by everyone. +$ ENDIF +$ dflt = prefix - ".]" + ".LIB]" +$ rp = "Pathname where the private library files will reside? " +$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") +$ GOSUB myread +$ IF ans.NES."" +$ THEN privlib = ans +$ ELSE privlib = dflt +$ ENDIF +$! +$ ENDIF !%Config-I-VMS, skip "where install" questions +$! +$!: set the base revision +$ baserev="5.0" +$!: get the patchlevel +$ echo "" +$ echo4 "Getting the current patchlevel..." !>&4 +$ patchlevel_h = F$SEARCH("[-]patchlevel.h") +$ IF (patchlevel_h.NES."") +$ THEN +$ got_patch = "false" +$ 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)) +$ THEN +$ line = F$EDIT(line,"COMPRESS, TRIM") +$ patchlevel = F$EXTRACT(18,F$LENGTH(line)-18,line) +$ got_patch = "true" +$ ENDIF +$ IF ((F$LOCATE("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) +$ got_sub = "true" +$ ENDIF +$ IF (.NOT.got_patch).OR.(.NOT.got_sub) THEN GOTO Patchlevel_h_loop +$Close_patch: +$ CLOSE CONFIG +$ ELSE +$ patchlevel="0" +$ subversion="0" +$ ENDIF +$ echo "(You have ''package' ''baserev' PL''patchlevel' sub''subversion'.)" +$! This whole thing needs replacing w/ F$FAO() calls: +$ patchlevel = F$INTEGER(patchlevel) +$ IF patchlevel.LT.10 +$ THEN patchlevel = "00" + F$STRING(patchlevel) +$ ELSE patchlevel = "0" + F$STRING(patchlevel) +$ ENDIF +$ subversion = F$INTEGER(subversion) +$ IF subversion.GT.0 +$ THEN +$ IF subversion.LT.10 +$ THEN subversion = "0" + F$STRING(subversion) +$ ELSE subversion = F$STRING(subversion) +$ ENDIF +$ ELSE subversion = "" +$ ENDIF +$! +$ version = F$EXTRACT(0,1,baserev) + "_" + patchlevel + subversion +$! +$ IF (.NOT.vms_skip_install) +$ THEN +$!: set the prefixup variable, to restore leading tilda escape !sfn +$!: set the prefixup variable, to restore leading tilde escape !sfn +$! +$!: determine where public architecture dependent libraries go +$ IF (.NOT.silent) +$ THEN +$ echo "" +$ echo "''package' contains architecture-dependent library files. If you are" +$ ENDIF +$ IF (.NOT.silent) +$ THEN TYPE SYS$INPUT: +sharing libraries in a heterogeneous environment, you might store +these files in a separate location. Otherwise, you can just include +them with the rest of the public library files. +$ ENDIF +$ dflt = privlib - "]" + "." + archname + "." + version + "]" +$ rp = "Where do you want to put the public architecture-dependent libraries? " +$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") +$ GOSUB myread +$ IF ans.NES."" +$ THEN archlib = ans +$ ELSE archlib = dflt +$ ENDIF +$! +$!: set up the script used to warn in case of inconsistency !sfn +$!: function used to set $1 to $val !sfn +$! +$ ENDIF !%Config-I-VMS, skip "where install" questions +$! This quotation from Configure has to be included on VMS: +$ TYPE SYS$INPUT: + +There is, however, a strange, musty smell in the air that reminds me of +something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. +$ CONTINUE +$ IF (.NOT.vms_skip_install) +$ THEN +$!: it so happens the Eunice I know will not run shell scripts in Unix format +$! +$!: see if setuid scripts can be secure !sfn +$!: now see if they want to do setuid emulation !sfn +$! +$!: determine where site specific libraries go. +$ IF .NOT.silent +$ THEN TYPE SYS$INPUT: + +The installation process will also create a directory for +site-specific extensions and modules. Some users find it convenient +to place all local files in this directory rather than in the main +distribution directory. +$ ENDIF +$ dflt = privlib - "]" + ".SITE_PERL]" +$ rp = "Pathname for the site-specific library files? " +$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") +$ GOSUB myread +$ IF ans.NES."" +$ THEN sitelib = ans +$ ELSE sitelib = dflt +$ ENDIF +$! +$!: determine where site specific architecture-dependent libraries go. +$ IF .NOT.silent +$ THEN TYPE SYS$INPUT: + +The installation process will also create a directory for +architecture-dependent site-specific extensions and modules. +$ ENDIF +$ dflt = sitelib - "]" + "." + archname + "]" +$ rp = "Pathname for the site-specific architecture-dependent library files? " +$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") +$ GOSUB myread +$ IF ans.NES."" +$ THEN sitearch = ans +$ ELSE sitearch = dflt +$ ENDIF +$! +$!: determine where old public architecture dependent libraries might be +$! +$!: determine where public executables go +$ dflt = prefix - ".]" + ".BIN]" +$ rp = "Pathname where the public executables will reside? " +$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ") +$ GOSUB myread +$ IF ans.NES."" +$ THEN bin = ans +$ ELSE bin = dflt +$ ENDIF +$! +$!: determine where manual pages are on this system +$!: What suffix to use on installed man pages +$!: see if we can have long filenames +$!: determine where library module manual pages go +$!: What suffix to use on installed man pages +$!: see what memory models we can support +$! +$ ENDIF !%Config-I-VMS, skip "where install" questions +$! +$!: see if we need a special compiler +$! cc_list = "cc/vaxc|cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands +$! +$ nocc = "f" +$ vms_cc_dflt = "" +$ vms_cc_available = "" +$! +$ OPEN/WRITE CONFIG ccvms.c +$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky +$ WRITE CONFIG "#include <stdio.h>" +$ WRITE CONFIG "int main() {" +$ WRITE CONFIG "#ifdef __DECC" +$ WRITE CONFIG " printf(""/DECC\n"");" +$ WRITE CONFIG "#else" +$ WRITE CONFIG " printf(""/VAXC\n"");" +$ WRITE CONFIG "#endif" +$ WRITE CONFIG " exit(0);" +$ WRITE CONFIG "}" +$ CLOSE CONFIG +$! +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ cc/NoObj/list=ccvms.lis ccvms.c +$ tmp = $status +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ IF (silent) THEN GOSUB Shut_up +$! echo "%Config-I-VMS, After cc compile $status = >''tmp'<" !diagnostic +$! +$ IF tmp.NE.%X10B90001 +$ THEN +$ IF tmp.NE.%X10000001 +$ THEN +$ nocc = "t" !%X10000001 is return from gcc +$ GOTO Gcc_initial_check +$ ENDIF +$ ENDIF +$! +$ GOSUB List_Parse +$ IF .NOT.silent THEN echo "" +$ echo "%Config-I-VMS, Default ""cc"" is ''line' ''archsufx' ''F$GETSYI("VERSION")'" +$ IF F$LOCATE("VAX",line).NE.F$LENGTH(line) +$ THEN +$ vms_cc_dflt = "/vaxc" +$ vms_cc_available = vms_cc_available + "cc/vaxc " +$ IF .NOT.silent +$ THEN +$ echo "%Config-I-VMS, Will try cc/decc..." +$ ENDIF +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ SET NOON +$ cc/decc/NoObj/list=ccvms.lis ccvms.c +$ tmp = $status +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ SET ON +$ IF (silent) THEN GOSUB Shut_up +$ IF tmp.NE.%X10B90001 +$ THEN +$ echo "%Config-I-VMS, Apparently you don't have that one." +$ ELSE +$ GOSUB List_parse +$ echo "%Config-I-VMS, You also have: ''line' ''archsufx' ''F$GETSYI("VERSION")'" +$ vms_cc_available = vms_cc_available + "cc/decc " +$ ENDIF +$ ELSE +$ IF F$LOCATE("DEC",line).NE.F$LENGTH(line) +$ THEN +$ vms_cc_dflt = "/decc" +$ vms_cc_available = vms_cc_available + "cc/decc " +$ echo "%Config-I-VMS, Will try cc/vaxc..." +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ SET NOON +$ cc/vaxc/NoObj/list=ccvms.lis ccvms.c +$ tmp = $status +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ SET ON +$ IF (silent) THEN GOSUB Shut_up +$ IF tmp.NE.%X10B90001 +$ THEN +$ echo "%Config-I-VMS, Apparently you don't have that one." +$ ELSE +$ GOSUB List_parse +$ echo "%Config-I-VMS, You also have: ''line' ''archsufx' ''F$GETSYI("VERSION")'" +$ vms_cc_available = vms_cc_available + "cc/vaxc " +$ ENDIF +$ ENDIF +$ ENDIF +$! +$Gcc_initial_check: +$ echo "%Config-I-VMS, Checking for Gcc" +$ OPEN/WRITE CONFIG gccvers.lis +$ DEFINE SYS$ERROR CONFIG +$ DEFINE SYS$OUTPUT CONFIG +$ 'gcc_symbol'/noobj/version _nla0: +$ tmp = $status +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ IF (silent) THEN GOSUB Shut_up +$ CLOSE CONFIG +$ IF (tmp.NE.%X10000001).and.(tmp.ne.%X00030001) +$ THEN +$ echo "%Config-I-VMS, Symbol ""''gcc_symbol'"" is not defined. I guess you don't have it." +$ goto cc_cleanup +$ ENDIF +$ OPEN/READ CONFIG gccvers.lis +$GCC_List_Read: +$ READ/END_OF_FILE=GCC_List_End CONFIG line +$ GOTO GCC_List_Read +$GCC_List_End: +$ CLOSE CONFIG +$ echo line +$ vms_cc_available = vms_cc_available + "''gcc_symbol' " +$ DELETE/NOLOG/NOCONFIRM gccvers.lis; +$! +$CC_Cleanup: +$ DELETE/NOLOG/NOCONFIRM ccvms.*; +$CC_Desired: +$!: see if we need a special compiler +$! echo "" +$ echo "%Config-I-VMS, available compiler(s):" +$ echo "( ''vms_cc_available')" +$ IF .NOT.nocc +$ THEN +$ dflt = "cc''vms_cc_dflt'" !-> "cc" in case first compile went OK +$ ELSE +$ dflt = gcc_symbol +$ ENDIF +$ rp = "Use which C compiler? [''dflt'] " +$ GOSUB myread +$ IF ans.NES."" +$ THEN +$ ans = F$EDIT(ans,"TRIM, COMPRESS, LOWERCASE") +$ Mcc = ans +$ IF F$LOCATE("dec",ans).NE.F$LENGTH(ans) +$ THEN +$ Mcc = "cc/decc" +$ Using_Dec_C = "Yes" +$ ENDIF +$ IF F$LOCATE("vax",ans).NE.F$LENGTH(ans) +$ THEN +$ Mcc = "cc/vaxc" +$ Using_Vax_C = "Yes" +$ ENDIF +$ IF Mcc.NES.dflt +$ THEN +$ IF F$LOCATE("dec",dflt).NE.F$LENGTH(dflt) +$ THEN +$ C_COMPILER_Replace = "CC=cc=''Mcc'" +$ ELSE +$ Using_Dec_C = "Yes" +$ IF F$LOCATE("vax",dflt).NE.F$LENGTH(dflt) +$ THEN +$ C_COMPILER_Replace = "CC=cc=''Mcc'" +$ ENDIF +$ ENDIF +$ ELSE +$ IF Mcc .EQS. "cc/decc" +$ THEN +$ Using_Dec_C = "Yes" +$ ENDIF +$ ENDIF +$ ELSE +$ Mcc = dflt +$ IF Mcc .EQS. "cc/decc" +$ THEN +$ Using_Dec_C = "Yes" +$ ENDIF +$ IF Mcc .EQS. "cc/vaxc" +$ THEN +$ Using_Vax_C = "Yes" +$ ENDIF +$ IF Mcc .EQS. "gcc" +$ THEN +$ Using_Gnu_C = "Yes" +$ ENDIF +$ ENDIF +$Decc_Version_check: +$ IF "''Using_Dec_C'".EQS."Yes" +$ THEN +$ echo "" +$ echo4 "Checking for Dec C's version number..." !>&4 +$ OPEN/WRITE CONFIG deccvers.c +$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky +$ WRITE CONFIG "#include <stdio.h>" +$ WRITE CONFIG "int main() {" +$ WRITE CONFIG "#ifdef __DECC" +$ WRITE CONFIG "#ifdef __DECC_VER" +$ WRITE CONFIG " printf(""%i\n"", __DECC_VER);" +$ WRITE CONFIG "#else" +$ WRITE CONFIG " printf(""%i\n"", ""1"");" +$ WRITE CONFIG "#endif" +$ WRITE CONFIG "#endif" +$ WRITE CONFIG " exit(0);" +$ WRITE CONFIG "}" +$ CLOSE CONFIG +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ 'Mcc' deccvers.c +$ tmp = $status +$ DEASSIGN SYS$ERROR _NLA0: +$ DEASSIGN SYS$OUTPUT _NLA0: +$ IF (silent) THEN GOSUB Shut_up +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ link deccvers.obj +$ tmp = $status +$ DEASSIGN SYS$ERROR +$ DEASSIGN SYS$OUTPUT +$ IF (silent) THEN GOSUB Shut_up +$ OPEN/WRITE CONFIG deccvers.out +$ DEFINE SYS$ERROR CONFIG +$ DEFINE SYS$OUTPUT CONFIG +$ mcr []deccvers.exe +$ tmp = $status +$ CLOSE CONFIG +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ IF (silent) THEN GOSUB Shut_up +$ OPEN/READ CONFIG deccvers.out +$ READ/END_OF_FILE=Dec_c_cleanup CONFIG line +$Dec_c_cleanup: +$ CLOSE CONFIG +$! DELETE/NOLOG/NOCONFIRM deccvers.*; +$ echo "You are using Dec C ''line'" +$ Dec_C_Version = line +$ ENDIF +$Vaxc_Invoke_check: +$ IF "''Using_Vax_C'".EQS."Yes" +$ THEN +$ echo "" +$ echo4 "Checking to see how to invoke Vax C..." +$ OPEN/WRITE CONFIG vaxcchk.c +$ WRITE CONFIG "#include <stdio.h>" +$ WRITE CONFIG "int main() {" +$ WRITE CONFIG " printf(""%i\n"", ""1"");" +$ WRITE CONFIG " exit(0);" +$ WRITE CONFIG "}" +$ CLOSE CONFIG +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ SET NOON +$ cc/vaxc/NoObj vaxcchk.c +$ tmp = $status +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ SET ON +$ IF (silent) THEN GOSUB Shut_up +$ IF tmp.NE.%X10B90001 +$ THEN +$ Mcc = "cc" +$ ELSE +$ Mcc = "cc/vaxc" +$ ENDIF +$Vax_c_cleanup: +$ DELETE/NOLOG/NOCONFIRM vaxcchk.*; +$ ENDIF +$Gcc_check: +$ if "''using_gnu_c'" .eqs. "Yes" +$ THEN +$ vaxcrtl_olb = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB") +$ vaxcrtl_exe = F$SEARCH("SYS$SHARE:VAXCRTL.EXE") +$ gcclib_olb = F$SEARCH("GNU_CC:[000000]GCCLIB.OLB") +$ IF gcclib_olb .EQS. "" +$ THEN +$! These objects/libs come w/ gcc 2.7.2 for AXP: +$ tmp = F$SEARCH("GNU_CC:[000000]libgcc2.olb") +$ IF tmp .NES. "" then gcclib_olb = tmp +$ tmp = F$SEARCH("GNU_CC:[000000]libgcclib.olb") +$ IF tmp .NES. "" +$ THEN +$ IF gcclib_olb .EQS. "" +$ THEN gcclib_olb = tmp +$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp +$ ENDIF +$ ENDIF +$ tmp = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB") +$ IF tmp .NES. "" +$ THEN +$ IF gcclib_olb .EQS. "" +$ THEN gcclib_olb = tmp +$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp +$ ENDIF +$ ENDIF +$ tmp = F$SEARCH("GNU_CC:[000000]crt0.obj") +$ IF tmp .NES. "" +$ THEN +$ IF gcclib_olb .EQS. "" +$ THEN gcclib_olb = tmp +$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp +$ ENDIF +$ ENDIF +$ IF gcclib_olb .EQS. vaxcrtl_olb THEN gcclib_olb = "" !goofy order of axplibs +$ ELSE +$ gcclib_olb = gcclib_olb + "/lib" +$ ENDIF +$ IF gcclib_olb .NES. "" .AND. - + (vaxcrtl_olb .NES. "" .OR. - + vaxcrtl_exe .NES. "" ) +$ THEN +$ echo "" +$ echo4 "Checking for GNU cc in disguise and/or its version number..." !>&4 +$ OPEN/WRITE CONFIG gccvers.c +$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky +$ WRITE CONFIG "#include <stdio.h>" +$ WRITE CONFIG "int main() {" +$ WRITE CONFIG "#ifdef __GNUC__" +$ WRITE CONFIG "#ifdef __VERSION__" +$ WRITE CONFIG " printf(""%s\n"", __VERSION__);" +$ WRITE CONFIG "#else" +$ WRITE CONFIG " printf(""%s\n"", ""1"");" +$ WRITE CONFIG "#endif" +$ WRITE CONFIG "#endif" +$ WRITE CONFIG " exit(0);" +$ WRITE CONFIG "}" +$ CLOSE CONFIG +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ 'Mcc' gccvers.c +$ tmp = $status +$ DEASSIGN SYS$ERROR _NLA0: +$ DEASSIGN SYS$OUTPUT _NLA0: +$ IF (silent) THEN GOSUB Shut_up +$ DEFINE SYS$ERROR _NLA0: +$ DEFINE SYS$OUTPUT _NLA0: +$ IF vaxcrtl_exe .EQS. "" +$ THEN +$ IF F$LOCATE("VAXCRTL",gcclib_olb).NE.F$LENGTH(gcclib_olb) +$ THEN +$ link gccvers.obj,'gcclib_olb',SYS$LIBRARY:VAXCRTL/Library +$ tmp = $status +$ ELSE +$ link gccvers.obj,'gcclib_olb' +$ tmp = $status +$ ENDIF +$ ELSE +$ OPEN/WRITE CONFIG GCCVERS.OPT +$ WRITE CONFIG "SYS$SHARE:VAXCRTL/SHARE" +$ CLOSE CONFIG +$ link gccvers.obj,GCCVERS.OPT/OPT,'gcclib_olb' +$ tmp = $status +$ ENDIF +$ DEASSIGN SYS$ERROR +$ DEASSIGN SYS$OUTPUT +$ IF (silent) THEN GOSUB Shut_up +$ OPEN/WRITE CONFIG gccvers.out +$ DEFINE SYS$ERROR CONFIG +$ DEFINE SYS$OUTPUT CONFIG +$ mcr []gccvers.exe +$ tmp = $status +$ CLOSE CONFIG +$ DEASSIGN SYS$OUTPUT +$ DEASSIGN SYS$ERROR +$ IF (silent) THEN GOSUB Shut_up +$ OPEN/READ CONFIG gccvers.out +$ READ/END_OF_FILE=Gcc_cleanup CONFIG line +$Gcc_cleanup: +$ CLOSE CONFIG +$ DELETE/NOLOG/NOCONFIRM gccvers.*; +$ IF F$LOCATE("GNU C version ",line).NE.F$LENGTH(line) +$ THEN +$ echo "You are not using GNU cc." +$ GOTO Host_name +$ ELSE +$ echo "You are using GNU cc ''line'" +$ Using_Gnu_C = "Yes" +$ C_COMPILER_Replace = "CC=cc=''Mcc'" +$ GOTO Include_dirs +$ ENDIF +$ ENDIF +$endif +$ GOTO Host_name +$! +$List_Parse: +$ OPEN/READ CONFIG ccvms.lis +$ READ CONFIG line +$ IF (F$GETSYI("HW_MODEL") .LT. 1024) +$ THEN +$ read CONFIG line +$ archsufx = "VAX" +$ ELSE +$ archsufx = "AXP" +$ ENDIF +$ CLOSE CONFIG +$ line = F$EDIT(line,"TRIM,COMPRESS") +$ line = line - "Page 1" ! occurs at end all compilers +$ line = line - "CCVMS " ! filename appears w/ VAXC +$ line = line - "Source Listing " ! Seen w/ AXP DECC +$ tmp = F$EXTRACT(0,20,line) !timestamp, e.g. "30-JUL-1996 21:12:54 " +$ line = line - tmp +$ line = F$EDIT(line,"TRIM") !bit redundant but we're in no big hurry +$ DELETE/NOLOG/NOCONFIRM ccvms.lis; +$ RETURN +$! +$Include_dirs: +$!: What should the include directory be ? +$ dflt = gcclib_olb +$ rp = "Where are the include files you want to use? " +$ IF f$length( rp + "[''dflt'] " ).gt.76 +$ THEN rp = F$FAO("!AS!/!AS",rp,"[''dflt'] ") +$ ELSE rp = rp + "[''dflt'] " +$ ENDIF +$ GOSUB myread +$ usrinc = ans +$! +$!: see if we have to deal with yellow pages, now NIS. +$!: now get the host name +$Host_name: +$ echo "" +$ echo4 "Figuring out host name..." !>&4 +$ myhostname = "" +$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("ARPANET_HOST_NAME") +$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("INTERNET_HOST_NAME") +$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("MULTINET_HOST_NAME") +$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("UCX$INET_HOST_NAME") +$ IF myhostname.eqs."".and. - + F$TRNLNM("UCX$INET_HOST") .nes. "" .and. - + F$TRNLNM("UCX$INET_DOMAIN") .nes. "" THEN - + myhostname = F$TRNLNM("UCX$INET_HOST") + "." + F$TRNLNM("UCX$INET_DOMAIN") +$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("TCPWARE_DOMAINNAME") +$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("NEWS_ADDRESS") +$ IF myhostname.eqs."" THEN myhostname = F$TRNLNM("SYS$NODE") - "::" +$ IF myhostname.eqs."" THEN myhostname = F$EDIT(F$GETSYI("SCSNODE"),"TRIM") +$!: you do not want to know about this +$!: verify guess +$ rp = "Your host name appears to be """"''myhostname'"""". Right? " +$ GOSUB myread +$ IF (.not.ans).and.(ans.NES."") +$ THEN +$ READ SYS$COMMAND/PROMPT= - + "Please type the (one word) name of your host: " ans +$ myhostname = ans +$ ENDIF +$!: translate upper to lower if necessary +$ myhostname = F$EDIT(myhostname,"COLLAPSE") +$ mylowhostname = F$EDIT(myhostname," LOWERCASE") +$ IF mylowhostname.NES.myhostname +$ THEN +$ echo "(Normalizing case in your host name)" +$ myhostname = mylowhostname +$ ENDIF +$! +$ fp = F$LOCATE(".",myhostname) +$ mydomain = F$EXTRACT(fp,(F$LENGTH(myhostname)-fp)+1,myhostname) +$ 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 +$!: translate upper to lower if necessary +$ mydomain = F$EDIT(mydomain,"COLLAPSE") +$ mylowdomain = F$EDIT(mydomain," LOWERCASE") +$ IF mylowdomain.NES.mydomain +$ THEN +$ echo "(Normalizing case in your domain name)" +$ mydomain = mylowdomain +$ ENDIF +$ ENDIF +$ myhostname = myhostname - mydomain +$ echo "(Trimming domain name from host name--host name is now ''myhostname')" +$ IF .NOT.silent +$ THEN TYPE SYS$INPUT: + +I need to get your e-mail address in Internet format if possible, i.e. +something like user@host.domain. Please answer accurately since I have +no easy means to double check it. The default value provided below +is most probably close to the reality but may not be valid from outside +your organization... +$ ENDIF +$ dflt = "''cf_by@''myhostname'"+"''mydomain'" +$ rp = "What is your e-mail address? [''dflt'] " +$ GOSUB myread +$ IF ans +$ THEN cf_email = ans +$ ELSE cf_email = dflt +$ ENDIF +$! +$ IF .NOT.silent +$ THEN TYPE SYS$INPUT: + +If you or somebody else will be maintaining perl at your site, please +fill in the correct e-mail address here so that they may be contacted +if necessary. Currently, the "perlbug" program included with perl +will send mail to this address in addition to perlbug@perl.com. You may +enter "none" for no administrator. +$ ENDIF +$ dflt = "''cf_email'" +$ rp = "Perl administrator e-mail address [''dflt'] " +$ GOSUB myread +$ IF ans +$ THEN perladmin = ans +$ ELSE perladmin = dflt +$ ENDIF +$! +$!: determine where public executable scripts go +$!: determine perl absolute location +$!: figure out how to guarantee perl startup +$! +$!: see how we invoke the C preprocessor +$! echo "" +$! echo4 "Now, how can we feed standard input to your C preprocessor..." !>&4 +$!: Set private lib path +$!: Now check and see which directories actually exist, avoiding duplicates +$!: determine optimize, if desired, or use for debug flag also +$!: We will not override a previous value, but we might want to +$!: augment a hint file +$!: the following weeds options from ccflags that are of no interest to cpp +$!: flags used in final linking phase +$!: Try to guess additional flags to pick up local libraries. +$!: coherency check +$! echo "" +$! echo4 "Checking your choice of C compiler and flags for coherency..." !>&4 +$!: compute shared library extension +$!: Looking for optional libraries +$!: see if nm is to be used to determine whether a symbol is defined or not +$!: get list of predefined functions in a handy place +$!: see if we have sigaction +$!: see whether socketshr exists +$ IF (F$SEARCH(F$PARSE("SocketShr","Sys$Share:.Exe")).NES."") +$ THEN +$ has_socketshr = "T" +$ echo "" +$ echo4 "Hmm... Looks like you have SOCKETSHR's Berkeley networking support." +$ endif +$ if (Dec_C_Version .ge. 50200000) +$ THEN +$ Has_Dec_C_Sockets = "T" +$ echo "" +$ echo4 "Hmm... Looks like you've got Dec C's Berkeley networking support." +$ ENDIF +$ ! Hey, we've got both. Default to Dec C, then, since it's better +$ if ("''Has_socketshr'".eq."T") .or.("''has_dec_c_sockets'".eq."T") +$ THEN +$ echo "" +$ echo "You've got sockets available. Which socket stack do you want to" +$ echo "build into perl?" +$ if "''has_dec_c_sockets'".eqs."T" +$ THEN +$ dflt = "DECC" +$ else +$ dlft = "SOCKETSHR" +$ endif +$ rp = "Choose socket stack (NONE" +$ if "''has_socketshr'".eqs."T" THEN rp = rp + ",SOCKETSHR" +$ if "''has_dec_c_sockets'".eqs."T" THEN rp = rp + ",DECC" +$ rp = rp + ") [''dflt'] " +$ GOSUB myread +$ IF "''ans'".eqs."" THEN ans = "''dflt'" +$ has_dec_c_sockets = "F" +$ has_socketshr = "F" +$ ans = F$EDIT(ans,"TRIM,COMPRESS,LOWERCASE") +$ IF ans.eqs."decc" then has_dec_c_sockets = "T" +$ IF ans.eqs."socketshr" then has_socketshr = "T" +$ endif +$! +$! +$! Ask about threads, if appropriate +$ if (Using_Dec_C.eqs."Yes") +$ THEN +$ echo "This version of Perl can be built with threads. While really nifty, +$ echo "they are a beta feature, and there is a speed penalty for perl +$ echo "programs if you build with threads *even if you don't use them* +$ echo "" +$ dflt = "y" +$ rp = "Build with threads? [''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_threads="T" +$ ENDIF +$ ENDIF +$! +$! Ask if they want to use perl's memory allocator +$ echo "" +$ echo "Perl has a built-in memory allocator that's tuned for perl's +$ echo "normal memory usage. It's oftentimes better than the standard +$ echo "system memory allocator. It also has the advantage of providing +$ echo "memory allocation statistics. +$ echo "" +$ dflt = "N" +$ rp = "Build with perl's memory allocator? [''dflt'] " +$ GOSUB myread +$ if ans.eqs."" then ans="''dflt'" +$ mymalloc = f$extract(0, 1, f$edit(ans,"TRIM,COMPRESS,UPCASE")) +$! +$! Ask for their default list of extensions to build +$ echo "" +$ echo "It's time to specify which modules you want to build into +$ echo "perl. Most of these are standard and should be chosen, though +$ 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 IO Opcode attrs Stdio DCLsym B SDBM_File" +$ if Using_Dec_C.eqs."Yes" +$ THEN +$ dflt = dflt + " POSIX" +$ if Use_Threads.eqs."T" +$ THEN +$ dflt = dflt + " Thread" +$ ENDIF +$ ENDIF +$ rp = "[''dflt'] " +$ GOSUB myread +$ if ans.eqs."" then ans = "''dflt'" +$ extensions = "''ans'" +$! +$! %Config-I-VMS, determine build/make utility here (make gmake mmk mms) +$ echo "" +$ echo "%Config-I-VMS, Checking your ""make"" utilities..." +$! If the 'build' that you use is not here add it and it's test +$! switch to the _END_ of these strings (and increment max_build) +$! (e.g. builders = builders + "/FOOMAKE" +$! probers = probers + " -fooVersionSwitch" +$! ) & please let me know about it. +$ builders = "IMAKE/GNUMAKE/MGMAKE/GMAKE/MAKE/MMS/MMK" +$ probers = "-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!-f Makefile. -v!/IDENT!/IDENT" +$ max_build = 7 +$! +$ orig_dflt = "MMK" +$ default_set = "" +$ ok_builders = "" +$ OPEN/WRITE/ERROR=Open_error CONFIG Makefile. +$ WRITE CONFIG "dont_make_anything_yet:" +$ WRITE CONFIG F$FAO("!_") +$ CLOSE CONFIG +$ n = 0 +$ messages = F$ENVIRONMENT("MESSAGE") +$Build_probe: +$ build = F$ELEMENT(n,"/",builders) +$ probe = F$ELEMENT(n,"!",probers) +$ echo "Testing whether you have ''build' on your system..." +$ SET NOON !sorry :-( +$ ON CONTROL_Y THEN GOTO Reenable_messages_build !sorry :-( +$ SET MESSAGE/NOFAC/NOSEV/NOIDENT/NOTEXT !sorry :-( +$ 'build' 'probe' +$ IF ($SEVERITY .EQ. 1) +$ THEN +$ echo "OK." +$ IF (build .EQS. orig_dflt) +$ THEN +$ default_set = "TRUE" +$ dflt = build +$ ENDIF +$ ok_builders = ok_builders + " " + build +$ IF (.NOT. default_set) THEN dflt = build +$ ELSE +$ echo "Nope." +$ ENDIF +$Reenable_messages_build: !hope you made it here :-) +$ SET MESSAGE 'messages' !hope you made it here :-) +$ SET ON !hope you made it here :-) +$ n = n + 1 +$ IF (n .LT. max_build) THEN GOTO Build_probe +$! +$ echo "" +$ IF (ok_builders .NES. "") +$ THEN +$ echo "Here is the list of builders you can apparently use:" +$ echo "(",ok_builders," )" +$ rp = "Which """"make"""" utility do you wish to use [''dflt']? " +$ GOSUB myread +$ ans = F$EDIT(ans,"TRIM, COMPRESS") +$ ans = F$EXTRACT(0,F$LOCATE(" ",ans),ans) !throw out "-f Makefile." here +$ IF (ans .EQS. "") +$ THEN build = dflt +$ ELSE build = ans +$ ENDIF +$ ELSE +$ TYPE SYS$INPUT: + +%Config-E-VMS, ERROR: + Well this looks pretty serious. Perl5 cannot be compiled without a "make" + utility of some sort and after checking my "builders" list I cannot find + the symbol or command you use on your system to compile programs. + +$ READ SYS$COMMAND/PROMPT="%Config-I-VMS, Which ""MMS"" do you use? " ans +$ ans = F$EDIT(ans,"TRIM, COMPRESS") +$ ans = F$EXTRACT(0,F$LOCATE(" ",ans),ans) !throw out "-f Makefile." here +$ IF (ans .EQS. "") +$ THEN build = dflt +$ echo "I don't know where 'make' is, and my life depends on it." +$ echo "Go find a make program or fix your DCL$PATH setting!" +$ echo "ABORTING..." +$ SET DEFAULT 'vms_default_directory_name' !be kind rewind +$ STOP +$ EXIT 2 !$STATUS = "%X00000002" (error) +$ ELSE +$ build = ans +$ ENDIF +$ ENDIF +$! +$ DELETE/NOLOG Makefile.; +$ GOTO Beyond_open +$Open_error: +$ TYPE SYS$INPUT: + + There seems to be trouble. I just tried to create a file in +$ echo4 'F$ENVIRONMENT("DEFAULT")' +$ TYPE SYS$INPUT: + but was unsuccessful. I am stopping now. Please check that directories' + PROTECTION bits. I will leave you in the directory where you started + Configure.com +$ echo4 "ABORTING..." +$ GOTO Clean_up +$ STOP +$ EXIT +$! +$Beyond_open: +$! echo " Very well I will proceed with ""''build'""" +$ make = F$EDIT(build,"UPCASE") +$! +$!: locate the preferred pager for this system +$!pagers = "most|more|less|type/page" +$!rp='What pager is used on your system?' +$! +$! update [.vms]config.vms here +$! +$! update makefile here +$! echo4 "Updating makefile..." +$! +$ IF (make .EQS. "MMS").OR.(make .EQS. "MMK") +$ THEN +$ makefile = "" !wrt MANIFEST dir +$ UUmakefile = "DESCRIP.MMS" !wrt CWD dir +$ DEFmakefile = "DESCRIP.MMS" !wrt DEF dir (?) +$ ELSE +$ makefile = " -f [.VMS]Makefile." !wrt MANIFEST dir +$ UUmakefile = "[-.VMS]Makefile." !wrt CWD dir +$ DEFmakefile = "[-.VMS]Makefile." !wrt DEF dir (?) +$ ENDIF +$! +$ IF macros.NES."" +$ THEN +$ tmp = F$LENGTH(macros) +$ macros = F$EXTRACT(0,(tmp-1),macros) !miss trailing comma +$ macros = "/macro=(" + macros + ")" +$ ENDIF +$! +$! Invoke the subconfig piece +$! +$ echo "" +$ echo4 "Generating config.h" +$ dflt = F$ENVIRONMENT("DEFAULT") +$ SET DEFAULT [-.vms] +$ @subconfigure +$ SET DEFAULT 'dflt +$! +$! %Config-I-VMS, write perl_setup.com here +$! +$ echo "" +$ echo4 "%Config-I-VMS, The perl_setup.com file is now being written..." +$ file_2_find = "[-.vms]perl_setup.com" +$ OPEN/WRITE CONFIG 'file_2_find' +$ WRITE CONFIG "$!" +$ WRITE CONFIG "$! Perl_Setup.com ''cf_time'" +$ IF cf_email.NES.perladmin +$ THEN +$ WRITE CONFIG "$! perl configured by ''cf_email'" +$ ELSE +$ WRITE CONFIG "$! This perl configured & administered by ''perladmin'" +$ ENDIF +$ WRITE CONFIG "$!" +$ 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" +$ IF (tzneedset) +$ THEN +$ WRITE CONFIG "$ define SYS$TIMEZONE_DIFFERENTIAL ''tzd'" +$ ELSE !leave in but commented out (in case setting was from perl :-) +$ WRITE CONFIG "$! define SYS$TIMEZONE_DIFFERENTIAL ''tzd'" +$ ENDIF +$ WRITE CONFIG "$!" +$ WRITE CONFIG "$! Symbols for commonly used scripts:" +$ WRITE CONFIG "$!" +$ WRITE CONFIG "$ Perldoc == ""'"+"'Perl' Perl_Root:[lib.pod]Perldoc.com -t""" +$ CLOSE CONFIG +$! +$ echo "" +$ echo "%Config-I-VMS, The file can be found at:" +$ echo4 "-Config-I-VMS, ''F$SEARCH(file_2_find)'" +$ echo "-Config-I-VMS, Add that file (or an @ call to it) to your [SY]LOGIN.COM" +$ echo "-Config-I-VMS, when you are satisfied with a successful compilation," +$ echo "-Config-I-VMS, testing, and installation of your perl." +$ echo "" +$! +$!figure out where we "are" by parsing 'vms_default_directory_name' +$! +$ set_def_command = "" +$ dflt = F$ENVIRONMENT("DEFAULT") - ".UU]" +$ tmp = vms_default_directory_name - dflt - "]" +$ i = 0 +$ IF tmp .EQS. "" THEN GOTO Beyond_set_def_loop +$Set_def_loop: +$ tmp1 = F$ELEMENT(i,".",tmp) +$ IF tmp1 .EQS. "." THEN GOTO Beyond_set_def_loop +$ IF i .EQ. 0 +$ THEN set_def_command = "set default [-" +$ ELSE set_def_command = set_def_command + "-" +$ ENDIF +$ i = i + 1 +$ GOTO Set_def_loop +$Beyond_set_def_loop: +$ IF set_def_command.NES."" +$ THEN +$ set_def_command = set_def_command - "-" + "]" +$ echo4 "" +$ echo4 "In order to build ''package' you must now issue the commands:" +$ echo4 "" +$ echo4 " ''set_def_command'" +$ ELSE +$ echo4 "" +$ echo4 "In order to build ''package' you must now issue the command:" +$ echo4 "" +$ ENDIF +$ echo4 " ''make'''makefile'", macros +$ echo4 "" +$! +$Clean_up: +$ IF (silent) +$ THEN +$ DEASSIGN SYS$OUTPUT +$! DEASSIGN SYS$ERROR +$ ENDIF +$ IF F$GETJPI("","FILCNT").NE.vms_filcnt THEN CLOSE CONFIG +$ IF F$GETJPI("","FILCNT").NE.vms_filcnt +$ THEN WRITE SYS$ERROR "%Config-W-VMS, WARNING: There is a file still open" +$ ENDIF +$ dflt = F$ENVIRONMENT("DEFAULT") +$ IF F$LOCATE("UU]",dflt).EQS.(F$LENGTH(dflt)-3) +$ THEN +$ IF ( F$SEARCH("[]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM []*.*;* +$ SET DEFAULT [-] +$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) UU.DIR +$ DELETE/NOLOG/NOCONFIRM UU.DIR; +$ ENDIF +$ SET DEFAULT 'vms_default_directory_name' !be kind rewind +$ STOP +$ EXIT +$!: End of Configure |