$ user_c_flags = ""
$ use_ieee_math = "y"
$ be_case_sensitive = "n"
+$ shorten_long_symbols = "y"
$ unlink_all_versions = "n"
$ builder = "MMK"
$ use_vmsdebug_perl = "n"
$ use_debugmalloc = "N"
$ ccflags = ""
$ static_ext = ""
+$ dynamic_ext = ""
$ nonxs_ext = ""
+$ nonxs_ext2 = ""
$ vms_default_directory_name = F$ENVIRONMENT("DEFAULT")
$ max_allowed_dir_depth = 3 ! e.g. [A.B.PERLxxx] not [A.B.C.PERLxxx]
$! max_allowed_dir_depth = 2 ! e.g. [A.PERLxxx] not [A.B.PERLxxx]
$ THEN
$ CREATE/DIRECTORY [.UU]
$ ELSE
+$ IF ( F$SEARCH("[.UU.CXX_REPOSITORY]*.*").NES."" )
+$ THEN
+$ DELETE/NOLOG/NOCONFIRM [.UU.CXX_REPOSITORY]*.*;*
+$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) [.UU]CXX_REPOSITORY.DIR
+$ ENDIF
$ IF ( F$SEARCH("[.UU]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM [.UU]*.*;*
$ ENDIF
$!: Configure runs within the UU subdirectory
$ config_symbols1 ="|installprivlib|installscript|installsitearch|installsitelib|most|oldarchlib|oldarchlibexp|osname|pager|perl_symbol|perl_verb|"
$ config_symbols2 ="|prefix|privlib|privlibexp|scriptdir|sitearch|sitearchexp|sitebin|sitelib|sitelib_stem|sitelibexp|try_cxx|use64bitall|use64bitint|"
$ config_symbols3 ="|usecasesensitive|usedefaulttypes|usedevel|useieee|useithreads|uselongdouble|usemultiplicity|usemymalloc|usedebugging_perl|"
-$ config_symbols4 ="|useperlio|usesecurelog|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
-$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthread"
+$ config_symbols4 ="|usesecurelog|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
+$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthreads|useshortenedsymbols"
$!
$ open/read CONFIG 'config_sh'
$ rd_conf_loop:
$ delete/symbol dsym
$ if f$type(usedebugging_perl) .nes. ""
$ then
-$ useperldebug = usedebugging_perl
+$ DEBUGGING = usedebugging_perl
$ delete/symbol usedebugging_perl
$ endif
$!
$ tz = f$fao("UTC!AS!UL:!2ZL",signothetime,tzhour,tzminrem)
$ cf_time = "''wkday' ''mon' ''mday' ''hour':''min':''sec' ''tz' ''year'"
$!
-$!: determine the architecture name
-$! Note that DCL in VMS V5.4 does not have F$GETSYI("ARCH_NAME")
-$! but does have F$GETSYI("HW_MODEL").
-$! Please try to use either archname .EQS. "VMS_VAX" or archname .EQS.
-$! "VMS_AXP" from here on to allow cross-platform configuration (e.g.
+$! This quotation from Configure has to be included on VMS:
+$!
+$ TYPE SYS$INPUT:
+$ DECK
+
+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.
+$ EOD
+$!
+$! Determine the architecture name. For now we just get the base
+$! architecture name, which may accumulate various minus sign-delimited
+$! appendages later depending on configuration options. But we need the
+$! base name early because not all questions are worth asking on all
+$! platforms.
+$!
+$! Please use F$ELEMENT(0,"-",archname) .EQS. "VMS_VAX" (or "VMS_AXP" or
+$! "VMS_IA64") from here on to allow cross-platform configuration (e.g.
$! configure a VAX build on an Alpha).
$!
$ IF (F$GETSYI("HW_MODEL") .LT. 1024 .AND. F$GETSYI("HW_MODEL") .GT. 0)
$ ENDIF
$ alignbytes="8"
$ ENDIF
-$ dflt = archname
-$ 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
-$ bool_dflt = "n"
-$ vms_prefix = "perl_root"
-$ vms_prefixup = F$EDIT(vms_prefix,"UPCASE")
-$ rp = "Will you be sharing your ''vms_prefixup' with ''otherarch'? [''bool_dflt'] "
-$ GOSUB myread
-$ IF .NOT. ans
-$ THEN
-$ sharedperl = "N"
-$ ELSE
-$ sharedperl = "Y"
-$ IF (archname.EQS."VMS_AXP")
-$ THEN
-$ macros = macros + """AXE=1"","
-$ ENDIF
-$ IF (archname.EQS."VMS_IA64")
-$ THEN
-$ macros = macros + """IXE=1"","
-$ ENDIF
-$ 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
-$!
-$ IF F$TYPE(prefix) .EQS. ""
-$ THEN
-$ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]"
-$ prefix = F$PARSE(prefix,,,,"NO_CONCEAL") - "][" - "000000." - ".000000" - ".;"
-$ prefixbase = prefix - "]"
-$! Add _ROOT to make install PERL_ROOT differ from build directory.
-$ prefix = prefixbase + "_ROOT.]"
-$ ENDIF
-$ ! more redundant scrubbing of values
-$ prefix = prefix - "000000."
-$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]" + ".]"
-$ src = prefix
-$!: determine root of directory hierarchy where package will be installed.
-$ dflt = prefix
-$ IF .NOT.silent
-$ THEN
-$ echo ""
-$ echo "By default, ''package' will be installed in ''dflt', pod"
-$ echo "pages under ''prefixbase'.LIB.POD], etc..., i.e. with ''dflt' as prefix for"
-$ echo "all installation directories."
-$ echo "On ''osname' the prefix is used to DEFINE the ''vms_prefixup' prior to installation"
-$ echo "as well as during subsequent use of ''package' via ''packageup'_SETUP.COM."
-$ ENDIF
-$ rp = "Installation prefix to use (for ''vms_prefixup')? [ ''dflt' ] "
-$ GOSUB myread
-$ IF ans.NES.""
-$ THEN
-$ prefix = ans
-$ IF F$LOCATE(".]",ans) .EQ. F$LENGTH(ans) THEN prefix = prefix - "]" + ".]"
-$ ELSE
-$ prefix = dflt
-$ ENDIF
-$ perl_root = prefix
-$!
-$! Check here for pre-existing PERL_ROOT.
-$! -> ask if removal desired.
-$! Check here for writability of requested PERL_ROOT if it is not the default (cwd).
-$! -> recommend letting PERL_ROOT be PERL_SRC if requested PERL_ROOT is not writable.
-$!
-$ tmp = perl_root - ".]" + "]"
-$ dflt = f$parse(tmp,,,,)
-$ IF dflt .eqs. ""
-$ THEN
-$ echo4 "''tmp' does not yet exist."
-$! create/directory 'tmp'
-$ ELSE
-$ echo4 "''tmp' already exists."
-$ ENDIF
-$!
-$ vms_skip_install = "true"
-$ bool_dflt = "y"
-$! echo ""
-$ rp = "Skip the remaining """"where install"""" questions? [''bool_dflt'] "
-$ GOSUB myread
-$ IF (.NOT.ans) THEN vms_skip_install = "false"
-$ IF (.NOT.vms_skip_install)
-$ THEN
-$!
-$!: 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:
-$ DECK
-
-There are some auxiliary files for perl5 that need to be put into a
-private library directory that is accessible by everyone.
-$ EOD
-$ ENDIF
-$ IF F$TYPE(privlib) .NES. ""
-$ THEN dflt = privlib
-$ ELSE dflt = "''vms_prefix':[lib]"
-$ ENDIF
-$ rp = "Pathname where the private library files will reside? "
-$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
-$ GOSUB myread
-$ privlib = ans
-$!
-$ ENDIF !%Config-I-VMS, skip remaining "where install" questions
-$!
-$ IF F$TYPE(perl_symbol) .EQS. "" THEN perl_symbol := true
-$ IF F$TYPE(perl_verb) .EQS. "" THEN perl_verb = ""
-$ IF perl_symbol
-$ THEN bool_dflt = "y"
-$ ELSE bool_dflt = "n"
-$ ENDIF
-$ IF .NOT.silent
-$ THEN
-$ echo ""
-$ echo "You may choose to write ''packageup'_SETUP.COM to assign a foreign"
-$ echo "symbol to invoke ''package', which is the usual method."
-$ echO "If you do not do so then you would need a DCL command verb at the"
-$ echo "process or the system wide level."
-$ ENDIF
-$ rp = "Invoke perl as a global symbol foreign command? [''bool_dflt'] "
-$ GOSUB myread
-$ IF (.NOT.ans) THEN perl_symbol = "false"
-$!
-$ IF (.NOT.perl_symbol)
-$ THEN
-$ IF perl_verb .EQS. "DCLTABLES"
-$ THEN bool_dflt = "n"
-$ ELSE bool_dflt = "y"
-$ ENDIF
-$ IF .NOT.silent
-$ THEN
-$ echo ""
-$ echo "Since you won't be using a symbol you must choose to put the ''packageup'"
-$ echo "verb in a per-process table or in the system wide DCLTABLES (which"
-$ echo "would require write privilege)."
-$ ENDIF
-$ rp = "Invoke perl as a per process command verb? [ ''bool_dflt' ] "
-$ GOSUB myread
-$ IF (.NOT.ans)
-$ THEN perl_verb = "DCLTABLES"
-$ ELSE perl_verb = "PROCESS"
-$ ENDIF
-$ ENDIF ! (.NOT.perl_symbol)
$!
$!: set the base revision
$ baserev="5.0"
$!
$ version = revision + "_" + patchlevel + "_" + subversion
$!
-$ IF (.NOT.vms_skip_install)
-$ THEN
-$!: set the prefixup variable, to restore leading tilde escape !sfn
+$!: see if we need a special compiler
+$! cc_list = "cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands
$!
-$!: determine where public architecture dependent libraries go
-$ IF (.NOT.silent)
+$ nocc = "f"
+$ vms_cc_dflt = ""
+$ vms_cc_available = ""
+$!
+$ OPEN/WRITE CONFIG ccvms.c
+$ WRITE CONFIG "#ifdef __DECC"
+$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky
+$ WRITE CONFIG "#endif"
+$ 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
+$!
+$ SET NOON
+$ DEFINE/USER_MODE SYS$ERROR _NLA0:
+$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
+$ cc/NoObj/list=ccvms.lis ccvms.c
+$ tmp = $status
+$ SET ON
+$ IF (silent) THEN GOSUB Shut_up
+$ 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 "Default ""cc"" is ''line' ''archsufx' ''F$GETSYI("VERSION")'"
+$ IF F$LOCATE("VAX",line).NE.F$LENGTH(line)
+$ THEN
+$ IF .NOT.silent
$ THEN
-$ echo ""
-$ echo "''package' contains architecture-dependent library files. If you are"
+$ echo "Will try cc/decc..."
$ ENDIF
-$ IF (.NOT.silent)
+$ SET NOON
+$ DEFINE/USER_MODE SYS$ERROR NL:
+$ DEFINE/USER_MODE SYS$OUTPUT NL:
+$ cc/decc/NoObj/list=ccvms.lis ccvms.c
+$ tmp = $status
+$ SET ON
+$ IF (silent) THEN GOSUB Shut_up
+$ IF tmp.NE.%X10B90001
$ THEN
-$ TYPE SYS$INPUT:
-$ DECK
-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.
-$ EOD
+$ echo "Apparently you don't have that one."
+$ ELSE
+$ GOSUB List_parse
+$ echo "You also have: ''line' ''archsufx' ''F$GETSYI("VERSION")'"
+$ vms_cc_available = vms_cc_available + "cc/decc "
$ ENDIF
-$ IF F$TYPE(archlib) .NES. ""
-$ THEN dflt = archlib
-$ ELSE dflt = privlib - "]" + "." + archname + "." + version + "]"
+$ ELSE
+$ IF (F$LOCATE("DEC",line).NE.F$LENGTH(line)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line)) -
+ .or.(F$LOCATE("HP",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line))
+$ THEN
+$ vms_cc_dflt = "/decc"
+$ vms_cc_available = vms_cc_available + "cc/decc "
$ ENDIF
-$ rp = "Where do you want to put the public architecture-dependent libraries? "
-$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
-$ GOSUB myread
-$ archlib = ans
-$!
-$ ENDIF !%Config-I-VMS, skip "where install" questions
-$!
-$! This quotation from Configure has to be included on VMS:
-$!
-$ TYPE SYS$INPUT:
-$ DECK
-
-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.
-$ EOD
-$ 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:
-$ DECK
-
-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.
-$ EOD
-$ ENDIF
-$ IF F$TYPE(sitelib) .NES. ""
-$ THEN dflt = sitelib
-$ ELSE dflt = privlib - "]" + ".SITE_PERL]"
-$ ENDIF
-$ rp = "Pathname for the site-specific library files? "
-$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
-$ GOSUB myread
-$ sitelib = ans
-$!
-$!: determine where site specific architecture-dependent libraries go.
-$ IF .NOT.silent
-$ THEN TYPE SYS$INPUT:
-$ DECK
-
-The installation process will also create a directory for
-architecture-dependent site-specific extensions and modules.
-$ EOD
-$ ENDIF
-$ IF F$TYPE(sitearch) .NES. ""
-$ THEN dflt = sitearch
-$ ELSE dflt = sitelib - "]" + "." + archname + "]"
-$ ENDIF
-$ rp = "Pathname for the site-specific architecture-dependent library files? "
-$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
-$ GOSUB myread
-$ sitearch = ans
-$!
-$!: determine where old public architecture dependent libraries might be
-$!
-$!: determine where public executables go
-$ IF F$TYPE(bin) .NES. ""
-$ THEN dflt = bin
-$! ELSE dflt = prefix - ".]" + ".BIN]"
-$ ELSE dflt = "/''vms_prefix'"
-$ ENDIF
-$ rp = "Pathname where the public executables will reside? "
-$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
-$ GOSUB myread
-$ bin = ans
-$!
-$!: determine where add-on public executables go
-$ IF F$TYPE(sitebin) .NES. ""
-$ THEN dflt = sitebin
-$ ELSE dflt = "''vms_prefix':[bin.''archname']"
-$ ENDIF
-$ rp = "Pathname where the add-on public executables should be installed? "
-$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
-$ GOSUB myread
-$ sitebin = ans
-$!
-$!: 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
-$!
-$ ELSE ! skipping "where install" questions, we must set some symbols
-$ IF F$TYPE(archlib).EQS."" THEN -
- archlib="''vms_prefix':[lib.''archname'.''version']"
-$ IF F$TYPE(bin) .EQS. "" THEN -
- bin="/''vms_prefix'"
-$ IF F$TYPE(privlib) .EQS. "" THEN -
- privlib ="''vms_prefix':[lib]"
-$ IF F$TYPE(sitearch) .EQS. "" THEN -
- sitearch="''vms_prefix':[lib.site_perl.''archname']"
-$ IF F$TYPE(sitelib) .EQS. "" THEN -
- sitelib ="''vms_prefix':[lib.site_perl]"
-$ IF F$TYPE(sitebin) .EQS. "" THEN -
- sitebin="''vms_prefix':[bin.''archname']"
-$ ENDIF !%Config-I-VMS, skip "where install" questions
-$!
-$! These derived locations can be set whether we've opted to
-$! skip the where install questions or not.
-$!
-$ IF F$TYPE(archlibexp) .EQS. "" THEN -
- archlibexp="''vms_prefix':[lib.''archname'.''version']"
-$ IF F$TYPE(binexp) .EQS. "" THEN -
- binexp ="''vms_prefix':[000000]"
-$ IF F$TYPE(builddir) .EQS. "" THEN -
- builddir ="''vms_prefix':[000000]"
-$ IF F$TYPE(installarchlib) .EQS. "" THEN -
- installarchlib="''vms_prefix':[lib.''archname'.''version']"
-$ IF F$TYPE(installbin) .EQS. "" THEN -
- installbin ="''vms_prefix':[000000]"
-$ IF F$TYPE(installscript) .EQS. "" THEN -
- installscript ="''vms_prefix':[utils]"
-$ IF F$TYPE(installman1dir) .EQS. "" THEN -
- installman1dir ="''vms_prefix':[man.man1]"
-$ IF F$TYPE(installman3dir) .EQS. "" THEN -
- installman3dir ="''vms_prefix':[man.man3]"
-$ IF F$TYPE(installprivlib) .EQS. "" THEN -
- installprivlib ="''vms_prefix':[lib]"
-$ IF F$TYPE(installsitearch) .EQS. "" THEN -
- installsitearch="''vms_prefix':[lib.site_perl.''archname']"
-$ IF F$TYPE(installsitelib) .EQS. "" THEN -
- installsitelib ="''vms_prefix':[lib.site_perl]"
-$ IF F$TYPE(oldarchlib) .EQS. "" THEN -
- oldarchlib="''vms_prefix':[lib.''archname']"
-$ IF F$TYPE(oldarchlibexp) .EQS. "" THEN -
- oldarchlibexp="''vms_prefix':[lib.''archname']"
-$ IF F$TYPE(privlibexp) .EQS. "" THEN -
- privlibexp ="''vms_prefix':[lib]"
-$ IF F$TYPE(scriptdir) .EQS. "" THEN -
- scriptdir ="''vms_prefix':[utils]"
-$ IF F$TYPE(sitearchexp) .EQS. "" THEN -
- sitearchexp ="''vms_prefix':[lib.site_perl.''archname']"
-$ IF F$TYPE(sitelib_stem) .EQS. "" THEN -
- sitelib_stem ="''vms_prefix':[lib.site_perl]"
-$ IF F$TYPE(sitelibexp) .EQS. "" THEN -
- sitelibexp ="''vms_prefix':[lib.site_perl]"
-$!
-$!: see if we need a special compiler
-$! cc_list = "cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands
-$!
-$ nocc = "f"
-$ vms_cc_dflt = ""
-$ vms_cc_available = ""
-$!
-$ OPEN/WRITE CONFIG ccvms.c
-$ WRITE CONFIG "#ifdef __DECC"
-$ WRITE CONFIG "#include <stdlib.h>" !DECC is sooo picky
-$ WRITE CONFIG "#endif"
-$ 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
-$!
-$ SET NOON
-$ DEFINE/USER_MODE SYS$ERROR _NLA0:
-$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
-$ cc/NoObj/list=ccvms.lis ccvms.c
-$ tmp = $status
-$ SET ON
-$ IF (silent) THEN GOSUB Shut_up
-$ 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 "Default ""cc"" is ''line' ''archsufx' ''F$GETSYI("VERSION")'"
-$ IF F$LOCATE("VAX",line).NE.F$LENGTH(line)
-$ THEN
-$ IF .NOT.silent
-$ THEN
-$ echo "Will try cc/decc..."
-$ ENDIF
-$ SET NOON
-$ DEFINE/USER_MODE SYS$ERROR NL:
-$ DEFINE/USER_MODE SYS$OUTPUT NL:
-$ cc/decc/NoObj/list=ccvms.lis ccvms.c
-$ tmp = $status
-$ SET ON
-$ IF (silent) THEN GOSUB Shut_up
-$ IF tmp.NE.%X10B90001
-$ THEN
-$ echo "Apparently you don't have that one."
-$ ELSE
-$ GOSUB List_parse
-$ echo "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)).or.(F$LOCATE("Compaq",line).NE.F$LENGTH(line)) -
- .or.(F$LOCATE("HP",F$EDIT(line,"UPCASE")).NE.F$LENGTH(line))
-$ THEN
-$ vms_cc_dflt = "/decc"
-$ vms_cc_available = vms_cc_available + "cc/decc "
-$ ENDIF
-$ ENDIF
+$ ENDIF
$!
$Gcc_initial_check:
$ echo "Checking for gcc"
$ echo "You are using Dec C ''line'"
$ ccversion = line
$ Dec_C_Version = F$INTEGER(line)
-$ IF Dec_C_Version .GE. 60200000 .AND. archname .NES. "VMS_VAX"
+$ IF Dec_C_Version .GE. 60200000 .AND. F$ELEMENT(0, "-", archname) .NES. "VMS_VAX"
$ THEN
$ echo4 "adding /NOANSI_ALIAS qualifier to ccflags."
$ ccflags = ccflags + "/NOANSI_ALIAS"
$List_Parse:
$ OPEN/READ CONFIG ccvms.lis
$ READ CONFIG line
-$ IF archname .EQS. "VMS_VAX"
+$ IF F$ELEMENT(0, "-", archname) .EQS. "VMS_VAX"
$ THEN
$ read CONFIG line
$ archsufx = "VAX"
$ ELSE
-$ IF archname .EQS. "VMS_AXP"
+$ IF F$ELEMENT(0, "-", archname) .EQS. "VMS_AXP"
$ THEN
$ archsufx = "AXP"
$ ELSE
$ echo "was mandatory on perl 5.005 and before on VMS, but is now"
$ echo "optional. If you do not generally use it you should probably"
$ echo "leave this off and gain a bit of extra speed."
-$ bool_dflt = "y"
-$ if f$type(useperldebug) .nes. ""
+$ bool_dflt = "n"
+$ if f$type(DEBUGGING) .nes. ""
$ then
-$ if f$extract(0,1,f$edit(useperldebug,"collapse,upcase")).eqs."N" .or. useperldebug .eqs. "undef" then bool_dflt="n"
+$ if f$extract(0,1,f$edit(DEBUGGING,"collapse,upcase")).eqs."Y" .or. DEBUGGING .eqs. "define" then bool_dflt="y"
$ endif
$ rp = "Build a DEBUGGING version of Perl? [''bool_dflt'] "
$ GOSUB myread
$ use_debugging_perl = ans
$!
-$! Ask if they want to build with MULTIPLICITY
-$ echo ""
-$ echo "Perl can be built so that multiple Perl interpreters can coexist"
-$ echo "within the same Perl executable."
-$ echo "There is some performance overhead, however, so you"
-$ echo "probably do not want to choose this unless you are going to be"
-$ echo "doing things with embedded perl."
-$ bool_dflt = "n"
-$ if f$type(usemultiplicity) .nes. ""
-$ then
-$ if usemultiplicity .or. usemultiplicity .eqs. "define" then bool_dflt = "y"
-$ endif
-$ rp = "Build Perl for multiplicity? [''bool_dflt'] "
-$ GOSUB myread
-$ IF ans
-$ THEN
-$ usemultiplicity="define"
-$ ELSE
-$ usemultiplicity="undef"
-$ ENDIF
$!
-$! Ask if they want to build with 64-bit support
-$ IF (archname.NES."VMS_VAX").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
+$! Ask about threads, if appropriate
+$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
$ THEN
-$ bool_dflt = "n"
-$ IF F$TYPE(use64bitint) .NES. ""
-$ THEN
-$ IF use64bitint .OR. use64bitint .eqs. "define" THEN bool_dflt = "y"
-$ ENDIF
$ echo ""
-$ echo "You have natively 64-bit long integers."
+$ echo "Perl can be built to take advantage of threads on some systems."
+$ echo "To do so, configure.com can be run with -""Dusethreads""."
$ echo ""
-$ echo "Perl can be built to take advantage of 64-bit integer types"
-$ echo "on some systems, To do so, Configure can be run with -Duse64bitint."
-$ echo "Choosing this option will most probably introduce binary incompatibilities."
-$ echo ""
-$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
-$ rp = "Try to use 64-bit integers, if available? [''bool_dflt'] "
-$ GOSUB myread
-$ use64bitint = ans
-$!
-$ bool_dflt = "n"
-$ IF F$TYPE(use64bitall) .NES. ""
-$ THEN
-$ IF use64bitall .OR. use64bitall .eqs. "define" THEN bool_dflt = "y"
-$ ENDIF
-$ echo ""
-$ echo "You may also choose to try maximal 64-bitness. It means using as much"
-$ echo "64-bitness as possible on the platform. This in turn means even more"
-$ echo "binary incompatibilities. On the other hand, your platform may not"
-$ echo "have any more 64-bitness available than what you already have chosen."
-$ echo ""
-$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
-$ rp = "Try to use maximal 64-bit support, if available? [''bool_dflt'] "
-$ GOSUB myread
-$ use64bitall=ans
-$ IF use64bitall .AND. .NOT. use64bitint
-$ THEN
-$ echo ""
-$ echo "Since you have chosen a maximally 64-bit build, I'm also turning on"
-$ echo "the use of 64-bit integers."
-$ use64bitint="Y"
-$ ENDIF
-$!
-$ bool_dflt = use64bitall
-$ IF F$TYPE(uselargefiles) .NES. ""
-$ THEN
-$ IF uselargefiles .OR. uselargefiles .eqs. "define" THEN bool_dflt = "y"
-$ ENDIF
-$ echo ""
-$ echo "Perl can be built to understand large files (files larger than 2 gigabytes)"
-$ echo "on some systems. To do so, Configure can be run with -Duselargefiles."
-$ echo ""
-$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
-$ rp = "Try to understand large files, if available? [''bool_dflt'] "
-$ GOSUB myread
-$ uselargefiles=ans
-$!
-$ bool_dflt = "n"
-$ IF F$TYPE(uselongdouble) .NES. ""
-$ THEN
-$ IF uselongdouble .OR. uselongdouble .eqs. "define" THEN bool_dflt = "y"
-$ ENDIF
-$ echo ""
-$ echo "Perl can be built to take advantage of long doubles which"
-$ echo "(if available) may give more accuracy and range for floating point numbers."
-$ echo ""
-$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
-$ rp = "Try to use long doubles, if available? [''bool_dflt'] "
-$ GOSUB myread
-$ uselongdouble = ans
-$!
-$ ENDIF ! not VAX && >= 7.1
-$!
-$ IF usesitecustomize .OR. usesitecustomize .eqs. "define"
-$ THEN
-$ usesitecustomize = "define"
-$ ELSE
-$ usesitecustomize = "undef"
-$ ENDIF
-$!
-$! Ask about threads, if appropriate
-$ IF ccname .EQS. "DEC" .OR. ccname .EQS. "CXX"
-$ THEN
-$ echo ""
-$ echo "Perl can be built to take advantage of threads on some systems."
-$ echo "To do so, configure.com can be run with -""Dusethreads""."
-$ echo ""
-$ echo "Note that Perl built with threading support runs slightly slower"
-$ echo "and uses more memory than plain Perl. The current implementation"
-$ echo "is believed to be stable, but it is fairly new, and so should be"
-$ echo "treated with caution."
+$ echo "Note that Perl built with threading support runs slightly slower"
+$ echo "and uses more memory than plain Perl. The current implementation"
+$ echo "is believed to be stable, but it is fairly new, and so should be"
+$ echo "treated with caution."
$ echo ""
$ bool_dflt = "n"
$ if f$type(usethreads) .nes. ""
$ GOSUB myread
$ if ans
$ THEN
+$ usethreads = "define"
$ use_threads="T"
$ ! Shall we do the 5.005-type threads, or IThreads?
$ echo "Since release 5.6, Perl has had two different threading implementations,"
$ then
$ if use5005threads .or. use5005threads .eqs. "define" then bool_dflt="n"
$ endif
-$ rp = "Use the newer intepreter-based ithreads? [''bool_dflt'] "
+$ rp = "Use the newer interpreter-based ithreads? [''bool_dflt'] "
$ GOSUB myread
$ use_ithreads=ans
$ if use_ithreads
$ thread_upcalls = "MTU=MTU=1"
$ usethreadupcalls = "define"
$ ! Are they on alpha or itanium?
-$ IF (archname .NES. "VMS_VAX") .AND. ("''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.2")
+$ IF (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX") .AND. ("''f$extract(1,3, f$getsyi(""version""))'" .GES. "7.2")
$ THEN
$ echo ""
$ echo "Threaded Perl can be linked to use multiple kernel threads on your system."
$ ENDIF
$ ENDIF
$ ENDIF
+$ ELSE
+$ usethreads = "undef"
$ ENDIF
$ ENDIF
$ IF F$TYPE(usethreadupcalls) .EQS. "" THEN usethreadupcalls = "undef"
$ IF F$TYPE(usekernelthreads) .EQS. "" THEN usekernelthreads = "undef"
-$ IF archname .NES. "VMS_VAX"
+$!
+$! Ask if they want to build with MULTIPLICITY
+$ echo ""
+$ echo "Perl can be built so that multiple Perl interpreters can coexist"
+$ echo "within the same Perl executable."
+$ IF usethreads .OR. usethreads .EQS. "define"
+$ THEN
+$ echo "This multiple interpreter support is required for interpreter-based threads."
+$ usemultiplicity="define"
+$ ELSE
+$ bool_dflt = "n"
+$ if f$type(usemultiplicity) .nes. ""
+$ then
+$ if usemultiplicity .or. usemultiplicity .eqs. "define" then bool_dflt = "y"
+$ endif
+$ rp = "Build Perl for multiplicity? [''bool_dflt'] "
+$ GOSUB myread
+$ IF ans
+$ THEN
+$ usemultiplicity="define"
+$ ELSE
+$ usemultiplicity="undef"
+$ ENDIF
+$ ENDIF
+$!
+$! Ask if they want to build with 64-bit support
+$ IF (F$ELEMENT(0, "-", archname).NES."VMS_VAX").and.("''f$extract(1,3, f$getsyi(""version""))'".ges."7.1")
$ THEN
+$ bool_dflt = "n"
+$ IF F$TYPE(use64bitint) .NES. ""
+$ THEN
+$ IF use64bitint .OR. use64bitint .eqs. "define" THEN bool_dflt = "y"
+$ ENDIF
+$ echo ""
+$ echo "You have natively 64-bit long integers."
+$ echo ""
+$ echo "Perl can be built to take advantage of 64-bit integer types"
+$ echo "on some systems, To do so, Configure can be run with -Duse64bitint."
+$ echo "Choosing this option will most probably introduce binary incompatibilities."
+$ echo ""
+$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
+$ rp = "Try to use 64-bit integers, if available? [''bool_dflt'] "
+$ GOSUB myread
+$ use64bitint = ans
+$!
+$ bool_dflt = "n"
+$ IF F$TYPE(use64bitall) .NES. ""
+$ THEN
+$ IF use64bitall .OR. use64bitall .eqs. "define" THEN bool_dflt = "y"
+$ ENDIF
+$ echo ""
+$ echo "You may also choose to try maximal 64-bitness. It means using as much"
+$ echo "64-bitness as possible on the platform. This in turn means even more"
+$ echo "binary incompatibilities. On the other hand, your platform may not"
+$ echo "have any more 64-bitness available than what you already have chosen."
+$ echo ""
+$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
+$ rp = "Try to use maximal 64-bit support, if available? [''bool_dflt'] "
+$ GOSUB myread
+$ use64bitall=ans
+$ IF use64bitall .AND. .NOT. use64bitint
+$ THEN
+$ echo ""
+$ echo "Since you have chosen a maximally 64-bit build, I'm also turning on"
+$ echo "the use of 64-bit integers."
+$ use64bitint="Y"
+$ ENDIF
+$!
+$ bool_dflt = use64bitall
+$ IF F$TYPE(uselargefiles) .NES. ""
+$ THEN
+$ IF uselargefiles .OR. uselargefiles .eqs. "define" THEN bool_dflt = "y"
+$ ENDIF
+$ echo ""
+$ echo "Perl can be built to understand large files (files larger than 2 gigabytes)"
+$ echo "on some systems. To do so, Configure can be run with -Duselargefiles."
+$ echo ""
+$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
+$ rp = "Try to understand large files, if available? [''bool_dflt'] "
+$ GOSUB myread
+$ uselargefiles=ans
+$!
+$ bool_dflt = "n"
+$ IF F$TYPE(uselongdouble) .NES. ""
+$ THEN
+$ IF uselongdouble .OR. uselongdouble .eqs. "define" THEN bool_dflt = "y"
+$ ENDIF
+$ echo ""
+$ echo "Perl can be built to take advantage of long doubles which"
+$ echo "(if available) may give more accuracy and range for floating point numbers."
+$ echo ""
+$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
+$ rp = "Try to use long doubles, if available? [''bool_dflt'] "
+$ GOSUB myread
+$ uselongdouble = ans
+$!
+$ ENDIF ! not VAX && >= 7.1
+$!
+$ IF usesitecustomize .OR. usesitecustomize .eqs. "define"
+$ THEN
+$ usesitecustomize = "define"
+$ ELSE
+$ usesitecustomize = "undef"
+$ ENDIF
+$!
$! Case sensitive?
$ echo ""
$ echo "By default, perl (and pretty much everything else on VMS) uses"
$ rp = "Build with case-sensitive symbols? [''bool_dflt'] "
$ GOSUB myread
$ be_case_sensitive = ans
+$!
+$! Shortened symbols?
+$ echo ""
+$ echo "The VMS linker does not handle symbol names longer than 31 characters,"
+$ echo "but the compiler can shorten long symbols if requested."
+$ bool_dflt = shorten_long_symbols
+$ if f$type(useshortenedsymbols) .nes. ""
+$ then
+$ if useshortenedsymbols .or. useshortenedsymbols .eqs. "define" then bool_dflt = "y"
+$ if f$extract(0,1,f$edit(useshortenedsymbols,"collapse,upcase")) .eqs. "N" .or. useshortenedsymbols .eqs. "undef" then bool_dflt = "n"
+$ endif
+$ rp = "Build with long symbols shortened? [''bool_dflt'] "
+$ GOSUB myread
+$ shorten_long_symbols = ans
+$ IF F$ELEMENT(0, "-", archname) .NES. "VMS_VAX"
+$ THEN
$! IEEE math?
$ echo ""
$ echo "Perl normally uses IEEE format (T_FLOAT) floating point numbers on"
$ GOSUB myread
$ use_ieee_math = ans
$ ELSE
-$ be_case_sensitive = "n"
$ use_ieee_math = "n"
$ ENDIF
$ useieee = "undef"
$ usecasesensitive = "undef"
+$ useshortenedsymbols = "undef"
$ if (use_ieee_math) then useieee = "define"
$ if (be_case_sensitive) then usecasesensitive = "define"
+$ if (shorten_long_symbols) then useshortenedsymbols = "define"
$! Unlink all versions?
$ echo ""
$ echo "By default, Perl's unlink() provides VMS-like behavior and only"
$ d_unlink_all_versions = "undef"
$ ENDIF
$!
-$! CC Flags
-$ echo ""
-$ echo "Your compiler may want other flags. For this question you should include"
-$ echo "/INCLUDE=(whatever) and /DEFINE=(whatever), flags and any other flags"
-$ echo "or qualifiers used by the compiler."
-$ echo ""
-$ echo "To use no flags, specify the word ""none""."
-$ dflt = user_c_flags
-$ rp = "Any additional cc flags? [''dflt'] "
-$ GOSUB myread
-$ IF ans .EQS. "none" THEN ans = ""
-$ user_c_flags = "''ans'"
+$! CC Flags
+$ echo ""
+$ echo "Your compiler may want other flags. For this question you should include"
+$ echo "/INCLUDE=(whatever) and /DEFINE=(whatever), flags and any other flags"
+$ echo "or qualifiers used by the compiler."
+$ echo ""
+$ echo "To use no flags, specify the word ""none""."
+$ dflt = user_c_flags
+$ rp = "Any additional cc flags? [''dflt'] "
+$ GOSUB myread
+$ IF ans .EQS. "none" THEN ans = ""
+$ user_c_flags = "''ans'"
+$!
+$! Ask whether they want to use secure logical translation when tainting
+$ echo ""
+$ 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 "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."
+$ bool_dflt = "y"
+$ if f$type(usesecurelog) .nes. ""
+$ then
+$ if f$extract(0,1,f$edit(usesecurelog,"collapse,upcase")).eqs."N" .or. usesecurelog .eqs. "undef" then bool_dflt = "n"
+$ endif
+$ rp = "Use secure logical name translation? [''bool_dflt'] "
+$ GOSUB myread
+$ d_secintgenv = ans
+$ usesecurelog = "undef"
+$ if (d_secintgenv) then usesecurelog = "define"
+$!
+$! 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 ""
+$ echo "This is currently broken in some configurations. Only enable it if"
+$ echo "you know what you are doing."
+$ bool_dflt = "n"
+$ if f$type(usedefaulttypes) .nes. ""
+$ then
+$ if usedefaulttypes .or. usedefaulttypes .eqs. "define" then bool_dflt="y"
+$ endif
+$ rp = "Always use default file types? [''bool_dflt'] "
+$ GOSUB myread
+$ d_alwdeftype = ans
+$ usedefaulttypes = "undef"
+$ if (d_alwdeftype) then usedefaulttypes = "define"
+$!
+$ dflt = archname
+$ 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 usethreads .OR. usethreads .EQS. "define"
+$ THEN
+$ echo4 "Threads selected."
+$ IF F$LOCATE("-thread", archname) .EQ. F$LENGTH(archname)
+$ THEN
+$ archname = "''archname'-thread"
+$ echo4 "...setting architecture name to ''archname'."
+$ ELSE
+$ echo4 "...and architecture name already has -thread."
+$ ENDIF
+$ ENDIF
+$!
+$ IF usemultiplicity .OR. usemultiplicity .EQS. "define"
+$ THEN
+$ echo4 "Multiplicity selected."
+$ IF F$LOCATE("-multi", archname) .EQ. F$LENGTH(archname)
+$ THEN
+$ archname = "''archname'-multi"
+$ echo4 "...setting architecture name to ''archname'."
+$ ELSE
+$ echo4 "...and architecture name already has -multi."
+$ ENDIF
+$ ENDIF
+$!
+$ IF uselongdouble .OR. uselongdouble .EQS. "define"
+$ THEN
+$ echo4 "Long doubles selected."
+$ IF F$LOCATE("-ld", archname) .EQ. F$LENGTH(archname)
+$ THEN
+$ archname = "''archname'-ld"
+$ echo4 "...setting architecture name to ''archname'."
+$ ELSE
+$ echo4 "...and architecture name already has -ld."
+$ ENDIF
+$ ENDIF
+$!
+$ bool_dflt = "n"
+$ vms_prefix = "perl_root"
+$ vms_prefixup = F$EDIT(vms_prefix,"UPCASE")
+$ rp = "Will you be sharing your ''vms_prefixup' with ''otherarch'? [''bool_dflt'] "
+$ GOSUB myread
+$ IF .NOT. ans
+$ THEN
+$ sharedperl = "N"
+$ ELSE
+$ sharedperl = "Y"
+$ IF (F$ELEMENT(0, "-", archname).EQS."VMS_AXP")
+$ THEN
+$ macros = macros + """AXE=1"","
+$ ENDIF
+$ IF (F$ELEMENT(0, "-", archname).EQS."VMS_IA64")
+$ THEN
+$ macros = macros + """IXE=1"","
+$ ENDIF
+$ 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
+$!
+$ IF F$TYPE(prefix) .EQS. ""
+$ THEN
+$ prefix = F$ENVIRONMENT("DEFAULT") - ".UU]" + "]"
+$ prefix = F$PARSE(prefix,,,,"NO_CONCEAL") - "][" - "000000." - ".000000" - ".;"
+$ prefixbase = prefix - "]"
+$! Add _ROOT to make install PERL_ROOT differ from build directory.
+$ prefix = prefixbase + "_ROOT.]"
+$ ENDIF
+$ ! more redundant scrubbing of values
+$ prefix = prefix - "000000."
+$ IF F$LOCATE(".]",prefix) .EQ. F$LENGTH(prefix) THEN prefix = prefix - "]" + ".]"
+$ src = prefix
+$!: determine root of directory hierarchy where package will be installed.
+$ dflt = prefix
+$ IF .NOT.silent
+$ THEN
+$ echo ""
+$ echo "By default, ''package' will be installed in ''dflt', pod"
+$ echo "pages under ''prefixbase'.LIB.POD], etc..., i.e. with ''dflt' as prefix for"
+$ echo "all installation directories."
+$ echo "On ''osname' the prefix is used to DEFINE the ''vms_prefixup' prior to installation"
+$ echo "as well as during subsequent use of ''package' via ''packageup'_SETUP.COM."
+$ ENDIF
+$ rp = "Installation prefix to use (for ''vms_prefixup')? [ ''dflt' ] "
+$ GOSUB myread
+$ IF ans.NES.""
+$ THEN
+$ prefix = ans
+$ IF F$LOCATE(".]",ans) .EQ. F$LENGTH(ans) THEN prefix = prefix - "]" + ".]"
+$ ELSE
+$ prefix = dflt
+$ ENDIF
+$ perl_root = prefix
+$!
+$! Check here for pre-existing PERL_ROOT.
+$! -> ask if removal desired.
+$! Check here for writability of requested PERL_ROOT if it is not the default (cwd).
+$! -> recommend letting PERL_ROOT be PERL_SRC if requested PERL_ROOT is not writable.
+$!
+$ tmp = perl_root - ".]" + "]"
+$ dflt = f$parse(tmp,,,,)
+$ IF dflt .eqs. ""
+$ THEN
+$ echo4 "''tmp' does not yet exist."
+$! create/directory 'tmp'
+$ ELSE
+$ echo4 "''tmp' already exists."
+$ ENDIF
+$!
+$ vms_skip_install = "true"
+$ bool_dflt = "y"
+$! echo ""
+$ rp = "Skip the remaining """"where install"""" questions? [''bool_dflt'] "
+$ GOSUB myread
+$ IF (.NOT.ans) THEN vms_skip_install = "false"
+$ IF (.NOT.vms_skip_install)
+$ THEN
+$!
+$!: 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:
+$ DECK
+
+There are some auxiliary files for perl5 that need to be put into a
+private library directory that is accessible by everyone.
+$ EOD
+$ ENDIF
+$ IF F$TYPE(privlib) .NES. ""
+$ THEN dflt = privlib
+$ ELSE dflt = "''vms_prefix':[lib]"
+$ ENDIF
+$ rp = "Pathname where the private library files will reside? "
+$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
+$ GOSUB myread
+$ privlib = ans
+$!
+$ ENDIF !%Config-I-VMS, skip remaining "where install" questions
+$!
+$ IF F$TYPE(perl_symbol) .EQS. "" THEN perl_symbol := true
+$ IF F$TYPE(perl_verb) .EQS. "" THEN perl_verb = ""
+$ IF perl_symbol
+$ THEN bool_dflt = "y"
+$ ELSE bool_dflt = "n"
+$ ENDIF
+$ IF .NOT.silent
+$ THEN
+$ echo ""
+$ echo "You may choose to write ''packageup'_SETUP.COM to assign a foreign"
+$ echo "symbol to invoke ''package', which is the usual method."
+$ echO "If you do not do so then you would need a DCL command verb at the"
+$ echo "process or the system wide level."
+$ ENDIF
+$ rp = "Invoke perl as a global symbol foreign command? [''bool_dflt'] "
+$ GOSUB myread
+$ IF (.NOT.ans) THEN perl_symbol = "false"
+$!
+$ IF (.NOT.perl_symbol)
+$ THEN
+$ IF perl_verb .EQS. "DCLTABLES"
+$ THEN bool_dflt = "n"
+$ ELSE bool_dflt = "y"
+$ ENDIF
+$ IF .NOT.silent
+$ THEN
+$ echo ""
+$ echo "Since you won't be using a symbol you must choose to put the ''packageup'"
+$ echo "verb in a per-process table or in the system wide DCLTABLES (which"
+$ echo "would require write privilege)."
+$ ENDIF
+$ rp = "Invoke perl as a per process command verb? [ ''bool_dflt' ] "
+$ GOSUB myread
+$ IF (.NOT.ans)
+$ THEN perl_verb = "DCLTABLES"
+$ ELSE perl_verb = "PROCESS"
+$ ENDIF
+$ ENDIF ! (.NOT.perl_symbol)
+$!
+$ IF (.NOT.vms_skip_install)
+$ THEN
+$!: 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:
+$ DECK
+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.
+$ EOD
+$ ENDIF
+$ IF F$TYPE(archlib) .NES. ""
+$ THEN dflt = archlib
+$ ELSE dflt = privlib - "]" + "." + archname + "." + version + "]"
+$ ENDIF
+$ rp = "Where do you want to put the public architecture-dependent libraries? "
+$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
+$ GOSUB myread
+$ archlib = ans
+$!
+$ ENDIF !%Config-I-VMS, skip "where install" questions
+$ 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:
+$ DECK
+
+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.
+$ EOD
+$ ENDIF
+$ IF F$TYPE(sitelib) .NES. ""
+$ THEN dflt = sitelib
+$ ELSE dflt = privlib - "]" + ".SITE_PERL]"
+$ ENDIF
+$ rp = "Pathname for the site-specific library files? "
+$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
+$ GOSUB myread
+$ sitelib = ans
+$!
+$!: determine where site specific architecture-dependent libraries go.
+$ IF .NOT.silent
+$ THEN TYPE SYS$INPUT:
+$ DECK
+
+The installation process will also create a directory for
+architecture-dependent site-specific extensions and modules.
+$ EOD
+$ ENDIF
+$ IF F$TYPE(sitearch) .NES. ""
+$ THEN dflt = sitearch
+$ ELSE dflt = sitelib - "]" + "." + archname + "]"
+$ ENDIF
+$ rp = "Pathname for the site-specific architecture-dependent library files? "
+$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
+$ GOSUB myread
+$ sitearch = ans
+$!
+$!: determine where old public architecture dependent libraries might be
$!
-$! Ask whether they want to use secure logical translation when tainting
-$ echo ""
-$ 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 "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."
-$ bool_dflt = "y"
-$ if f$type(usesecurelog) .nes. ""
-$ then
-$ if f$extract(0,1,f$edit(usesecurelog,"collapse,upcase")).eqs."N" .or. usesecurelog .eqs. "undef" then bool_dflt = "n"
-$ endif
-$ rp = "Use secure logical name translation? [''bool_dflt'] "
-$ GOSUB myread
-$ d_secintgenv = ans
-$ usesecurelog = "undef"
-$ if (d_secintgenv) then usesecurelog = "define"
+$!: determine where public executables go
+$ IF F$TYPE(bin) .NES. ""
+$ THEN dflt = bin
+$! ELSE dflt = prefix - ".]" + ".BIN]"
+$ ELSE dflt = "/''vms_prefix'"
+$ ENDIF
+$ rp = "Pathname where the public executables will reside? "
+$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
+$ GOSUB myread
+$ bin = ans
$!
-$! 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 ""
-$ echo "This is currently broken in some configurations. Only enable it if"
-$ echo "you know what you are doing."
-$ bool_dflt = "n"
-$ if f$type(usedefaulttypes) .nes. ""
-$ then
-$ if usedefaulttypes .or. usedefaulttypes .eqs. "define" then bool_dflt="y"
-$ endif
-$ rp = "Always use default file types? [''bool_dflt'] "
-$ GOSUB myread
-$ d_alwdeftype = ans
-$ usedefaulttypes = "undef"
-$ if (d_alwdeftype) then usedefaulttypes = "define"
+$!: determine where add-on public executables go
+$ IF F$TYPE(sitebin) .NES. ""
+$ THEN dflt = sitebin
+$ ELSE dflt = "''vms_prefix':[bin.''archname']"
+$ ENDIF
+$ rp = "Pathname where the add-on public executables should be installed? "
+$ rp = F$FAO("!AS!/!AS",rp,"[ ''dflt' ] ")
+$ GOSUB myread
+$ sitebin = ans
+$!
+$!: 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
+$!
+$ ELSE ! skipping "where install" questions, we must set some symbols
+$ IF F$TYPE(archlib).EQS."" THEN -
+ archlib="''vms_prefix':[lib.''archname'.''version']"
+$ IF F$TYPE(bin) .EQS. "" THEN -
+ bin="/''vms_prefix'"
+$ IF F$TYPE(privlib) .EQS. "" THEN -
+ privlib ="''vms_prefix':[lib]"
+$ IF F$TYPE(sitearch) .EQS. "" THEN -
+ sitearch="''vms_prefix':[lib.site_perl.''archname']"
+$ IF F$TYPE(sitelib) .EQS. "" THEN -
+ sitelib ="''vms_prefix':[lib.site_perl]"
+$ IF F$TYPE(sitebin) .EQS. "" THEN -
+ sitebin="''vms_prefix':[bin.''archname']"
+$ ENDIF !%Config-I-VMS, skip "where install" questions
+$!
+$! These derived locations can be set whether we've opted to
+$! skip the where install questions or not.
+$!
+$ IF F$TYPE(archlibexp) .EQS. "" THEN -
+ archlibexp="''vms_prefix':[lib.''archname'.''version']"
+$ IF F$TYPE(binexp) .EQS. "" THEN -
+ binexp ="''vms_prefix':[000000]"
+$ IF F$TYPE(builddir) .EQS. "" THEN -
+ builddir ="''vms_prefix':[000000]"
+$ IF F$TYPE(installarchlib) .EQS. "" THEN -
+ installarchlib="''vms_prefix':[lib.''archname'.''version']"
+$ IF F$TYPE(installbin) .EQS. "" THEN -
+ installbin ="''vms_prefix':[000000]"
+$ IF F$TYPE(installscript) .EQS. "" THEN -
+ installscript ="''vms_prefix':[utils]"
+$ IF F$TYPE(installman1dir) .EQS. "" THEN -
+ installman1dir ="''vms_prefix':[man.man1]"
+$ IF F$TYPE(installman3dir) .EQS. "" THEN -
+ installman3dir ="''vms_prefix':[man.man3]"
+$ IF F$TYPE(installprivlib) .EQS. "" THEN -
+ installprivlib ="''vms_prefix':[lib]"
+$ IF F$TYPE(installsitearch) .EQS. "" THEN -
+ installsitearch="''vms_prefix':[lib.site_perl.''archname']"
+$ IF F$TYPE(installsitelib) .EQS. "" THEN -
+ installsitelib ="''vms_prefix':[lib.site_perl]"
+$ IF F$TYPE(oldarchlib) .EQS. "" THEN -
+ oldarchlib="''vms_prefix':[lib.''archname']"
+$ IF F$TYPE(oldarchlibexp) .EQS. "" THEN -
+ oldarchlibexp="''vms_prefix':[lib.''archname']"
+$ IF F$TYPE(privlibexp) .EQS. "" THEN -
+ privlibexp ="''vms_prefix':[lib]"
+$ IF F$TYPE(scriptdir) .EQS. "" THEN -
+ scriptdir ="''vms_prefix':[utils]"
+$ IF F$TYPE(sitearchexp) .EQS. "" THEN -
+ sitearchexp ="''vms_prefix':[lib.site_perl.''archname']"
+$ IF F$TYPE(sitelib_stem) .EQS. "" THEN -
+ sitelib_stem ="''vms_prefix':[lib.site_perl]"
+$ IF F$TYPE(sitelibexp) .EQS. "" THEN -
+ sitelibexp ="''vms_prefix':[lib.site_perl]"
$!
$! determine whether to use malloc wrapping
$ echo ""
$ OPEN/READ CONFIG 'manifestfound'
$ext_loop:
$ READ/END_OF_FILE=end_ext/ERROR=end_ext CONFIG line
-$ IF F$EXTRACT(0,4,line) .NES. "ext/" THEN goto ext_loop
+$ IF F$EXTRACT(0,4,line) .NES. "ext/" .AND. -
+ F$EXTRACT(0,5,line) .NES. "dist/".AND. -
+ F$EXTRACT(0,5,line) .NES. "cpan/" THEN goto ext_loop
$ line = F$EDIT(line,"COMPRESS")
$ line = F$ELEMENT(0," ",line)
$ IF F$EXTRACT(0,4,line) .EQS. "ext/"
$ xxx = F$ELEMENT(1,"/",line)
$ IF F$SEARCH("[-.ext]''xxx'.DIR;1") .EQS. "" THEN GOTO ext_loop
$ ENDIF
+$ IF F$EXTRACT(0,5,line) .EQS. "dist/"
+$ THEN
+$ xxx = F$ELEMENT(1,"/",line)
+$ IF F$SEARCH("[-.dist]''xxx'.DIR;1") .EQS. "" THEN GOTO ext_loop
+$ ENDIF
+$ IF F$EXTRACT(0,5,line) .EQS. "cpan/"
+$ THEN
+$ xxx = F$ELEMENT(1,"/",line)
+$ IF F$SEARCH("[-.cpan]''xxx'.DIR;1") .EQS. "" THEN GOTO ext_loop
+$ ENDIF
$ IF xxx .EQS. "DynaLoader" THEN goto ext_loop ! omit
$!
$! (extspec = xxx) =~ tr!-!/!
$ extspec = ""
$ idx = 0
+$ extension_dir_name = xxx
$ replace_dash_with_slash:
$ before = F$ELEMENT(idx, "-", xxx)
$ IF before .EQS. "-" THEN goto end_replace_dash_with_slash
$ end_replace_dash_with_slash:
$
$ xxx = known_extensions
+$ gosub may_already_have_extension
+$ IF $STATUS .EQ. 1
+$ THEN
+$ xxx = nonxs_ext
+$ gosub may_already_have_extension
+$ ENDIF
+$ IF $STATUS .EQ. 1
+$ THEN
+$ xxx = nonxs_ext2
+$ gosub may_already_have_extension
+$ ENDIF
+$ IF $STATUS .NE. 1 THEN goto ext_loop
+$ goto found_new_extension
+$!
$ may_already_have_extension:
$ idx = F$LOCATE(extspec, xxx)
$ extlen = F$LENGTH(xxx)
-$ IF idx .EQ. extlen THEN goto found_new_extension
-$! But "Flirble" may just be part of "Acme-Flirble"
+$ IF idx .EQ. extlen THEN return 1 ! didn't find it
+$! But "Flirble" may just be part of "Acme-Flirble". This is not
+$! bullet-proof because we may only be looking at one chunk of the
+$! existing extension list.
$ IF idx .GT. 0 .AND. F$EXTRACT(idx - 1, 1, xxx) .NES. " "
$ THEN
$ xxx = F$EXTRACT(idx + F$LENGTH(extspec) + 1, extlen, xxx)
$ xxx = F$EXTRACT(idx, extlen - idx, xxx)
$ IF F$ELEMENT(0, " ", xxx) .EQS. extspec
$ THEN
-$ GOTO ext_loop
+$ RETURN 3
$ ELSE
$ xxx = F$EXTRACT(F$LENGTH(extspec) + 1, extlen, xxx)
GOTO may_already_have_extension
$ ENDIF
$!
$ found_new_extension:
-$ known_extensions = known_extensions + " ''extspec'"
+$ IF F$SEARCH("[-.ext.''extension_dir_name']*.xs") .EQS. "" .AND. F$SEARCH("[-.dist.''extension_dir_name']*.xs") .EQS. "" .AND. F$SEARCH("[-.cpan.''extension_dir_name']*.xs") .EQS. ""
+$ THEN
+$! Bit if a hack to get around the 1K buffer on older systems.
+$ IF F$LENGTH(nonxs_ext) .GT. 950
+$ THEN
+$ nonxs_ext2 = nonxs_ext2 + " ''extspec'"
+$ ELSE
+$ nonxs_ext = nonxs_ext + " ''extspec'"
+$ ENDIF
+$ ELSE
+$ known_extensions = known_extensions + " ''extspec'"
+$ ENDIF
$ goto ext_loop
$end_ext:
$ close CONFIG
$ DELETE/SYMBOL idx
$ DELETE/SYMBOL extspec
$ DELETE/SYMBOL extlen
+$ DELETE/SYMBOL extension_dir_name
$ known_extensions = F$EDIT(known_extensions,"TRIM,COMPRESS")
$ dflt = known_extensions
$ IF ccname .NES. "DEC" .AND. ccname .NES. "CXX"
$ THEN
$ dflt = dflt - "Socket" ! optional on VMS
$ ENDIF
-$ dflt = dflt - "Win32API/File" - "Win32CORE" - "Win32" ! need Dave Cutler's other project
+$ dflt = dflt - "Win32API/File" - "Win32" ! need Dave Cutler's other project
+$ nonxs_ext = nonxs_ext - "Win32CORE"
+$ nonxs_ext2 = nonxs_ext2 - "Win32CORE"
$ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
+$ nonxs_ext = F$EDIT(nonxs_ext,"TRIM,COMPRESS")
+$ nonxs_ext2 = F$EDIT(nonxs_ext2,"TRIM,COMPRESS")
$!
$! Ask for their default list of extensions to build
$ echo ""
$ echo "Which modules do you want to build into perl?"
$ rp = "[''dflt'] "
$ GOSUB myread
-$ extensions = F$EDIT(ans,"TRIM,COMPRESS")
+$ dynamic_ext = F$EDIT(ans,"TRIM,COMPRESS")
$!
$! %Config-I-VMS, determine build/make utility here (make gmake mmk mms)
$ echo ""
$ THEN
$ extra_flags = "''extra_flags'" + "/float=ieee/ieee=denorm"
$ ELSE
-$ IF (archname.EQS."VMS_IA64")
+$ IF (F$ELEMENT(0, "-", archname).EQS."VMS_IA64")
$ THEN
$ extra_flags = "''extra_flags'" + "/float=g_float"
$ ENDIF
$ ENDIF
+$ names_flags = ""
$ IF be_case_sensitive
$ THEN
-$ extra_flags = "''extra_flags'" + "/Names=As_Is"
+$ names_flags = "AS_IS"
+$ ENDIF
+$ IF shorten_long_symbols
+$ THEN
+$ IF be_case_sensitive
+$ THEN
+$ names_flags = "''names_flags',SHORTENED"
+$ ELSE
+$ names_flags = "SHORTENED"
+$ ENDIF
+$ ENDIF
+$ IF F$LENGTH(names_flags) .ne. 0
+$ THEN
+$ extra_flags = "''extra_flags'" + "/NAMES=(''names_flags')"
$ ENDIF
+$ DELETE/SYMBOLS names_flags
$ extra_flags = "''extra_flags'" + "''user_c_flags'"
$!
$ min_pgflquota = "100000"
$ ENDIF
$ ENDIF
$!
-$! PerlIO abstraction
-$!
-$ bool_dflt = "y"
-$ IF F$TYPE(useperlio) .NES. ""
-$ then
-$ if f$extract(0,1,f$edit(useperlio,"collapse,upcase")) .eqs. "N" .or. useperlio .eqs. "undef" then bool_dflt = "n"
-$ endif
-$ IF .NOT. silent
-$ THEN
-$ echo "Previous versions of ''package' used the standard IO mechanisms as"
-$ TYPE SYS$INPUT:
-$ DECK
-defined in <stdio.h>. Versions 5.003_02 and later of perl allow
-alternate IO mechanisms via the PerlIO abstraction layer, but the
-stdio mechanism is still available if needed. The abstraction layer
-can use AT&T's sfio (if you already have sfio installed) or regular stdio.
-Using PerlIO with sfio may cause problems with some extension modules.
-
-$ EOD
-$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
-$ ENDIF
-$ rp = "Use the PerlIO abstraction layer? [''bool_dflt'] "
-$ GOSUB myread
-$ IF ans
-$ THEN
-$ useperlio = "define"
-$ ELSE
-$ echo "Ok, doing things the stdio way."
-$ useperlio = "undef"
-$ ENDIF
-$!
$ echo ""
$ echo4 "Checking the C run-time library."
$!
$ ELSE
$ d_vms_be_case_sensitive = "undef"
$ ENDIF
+$ IF shorten_long_symbols
+$ THEN
+$ d_vms_shorten_long_symbols = "define"
+$ ELSE
+$ d_vms_shorten_long_symbols = "undef"
+$ ENDIF
$! Some constant defaults.
$ hwname = f$getsyi("HW_NAME")
$ myname = myhostname
$ uselongdouble = "define"
$ alignbytes="16"
$ nveformat="""Le"""
+$ nvEUformat="""LE"""
$ nvfformat="""Lf"""
+$ nvFUformat="""LF"""
$ nvgformat="""Lg"""
+$ nvGUformat="""LG"""
$ ELSE
$ uselongdouble = "undef"
$ nveformat="""e"""
+$ nvEUformat="""E"""
$ nvfformat="""f"""
+$ nvFUformat="""F"""
$ nvgformat="""g"""
+$ nvGUformat="""G"""
$ ENDIF
$ IF use64bitall .OR. use64bitall .EQS. "define"
$ THEN
$!
$ perl_cc=Mcc
$!
-$ IF (sharedperl .AND. archname .EQS. "VMS_AXP")
+$ IF (sharedperl .AND. F$ELEMENT(0, "-", archname) .EQS. "VMS_AXP")
$ THEN
$ obj_ext=".abj"
$ so="axe"
$ exe_ext=".axe"
$ lib_ext=".alb"
$ ELSE
-$ IF (sharedperl .AND. archname .EQS. "VMS_IA64")
+$ IF (sharedperl .AND. F$ELEMENT(0, "-", archname) .EQS. "VMS_IA64")
$ THEN
$ obj_ext=".ibj"
$ so="ixe"
$ perllibs=libs
$!
$!
-$ IF archname .NES. "VMS_VAX"
+$ IF F$ELEMENT(0, "-", archname) .NES. "VMS_VAX"
$ THEN
$ d_PRId64 = "define"
+$ d_PRIi64 = "define"
$ d_PRIu64 = "define"
$ d_PRIo64 = "define"
$ d_PRIx64 = "define"
$ d_modflproto = "define"
$ ELSE
$ d_PRId64 = "undef"
+$ d_PRIi64 = "undef"
$ d_PRIXU64 = "undef"
$ d_PRIu64 = "undef"
$ d_PRIo64 = "undef"
$ THEN
$ IF use_5005_threads
$ THEN
-$ arch = "''arch'-thread"
-$ archname = "''archname'-thread"
$ d_old_pthread_create_joinable = "undef"
$ old_pthread_create_joinable = " "
$ use5005threads = "define"
$ useithreads = "undef"
$ ELSE
-$ arch = "''arch'-ithread"
-$ archname = "''archname'-ithread"
$ d_old_pthread_create_joinable = "undef"
$ old_pthread_create_joinable = " "
$ use5005threads = "undef"
$! ELSE dflt = "n"
$! ENDIF
$! echo "''package' can use the sfio library, but it is experimental."
-$! IF useperlio .EQS. "undef"
-$! THEN
-$! echo "For sfio also the PerlIO abstraction layer is needed."
-$! echo "Earlier you said you would not want that."
-$! ENDIF
$! rp="You seem to have sfio available, do you want to try using it? [''dflt'] "
$! GOSUB myread
$! IF ans .EQS. "" THEN ans = dflt
$! IF ans
$! THEN
-$! echo "Ok, turning on both sfio and PerlIO, then."
-$! useperlio="define"
+$! echo "Ok, turning on sfio then."
$! val="define"
$! ELSE
$! echo "Ok, avoiding sfio this time. I'll use stdio instead."
$ d_getsent="undef"
$ ENDIF
$!
+$!
+$! Check for sa_len
+$!
+$ echo4 "Checking the availability of sa_len in the sockaddr struct ..."
+$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
+$ THEN
+$ OS
+$ WS "#if defined(__DECC) || defined(__DECCXX)"
+$ WS "#include <stdlib.h>"
+$ WS "#endif"
+$ WS "#define _SOCKADDR_LEN"
+$ WS "#include <types.h>"
+$ IF Has_Socketshr
+$ THEN
+$ WS "#include <socketshr.h>"
+$ ELSE
+$ WS "#include <socket.h>"
+$ ENDIF
+$ WS "int main() {"
+$ WS "struct sockaddr sa;"
+$ WS "return (sa.sa_len);"
+$ WS "}"
+$ CS
+$ GOSUB compile_ok
+$ IF compile_status .EQ. good_compile
+$ THEN
+$ d_sockaddr_sa_len="define"
+$ echo "You have sa_len in the sockaddr struct."
+$ ELSE
+$ d_sockaddr_sa_len="undef"
+$ echo "You do not have sa_len in the sockaddr struct."
+$ ENDIF
+$ ELSE
+$ d_sockaddr_sa_len="undef"
+$ echo "You do not have sa_len in the sockaddr struct."
+$ ENDIF
+$!
+$!
+$! Check for sin6_scope_id
+$!
+$ echo4 "Checking the availability of sin6_scope_id in the struct sockaddr_in6 ..."
+$ IF Has_Dec_C_Sockets .OR. Has_Socketshr
+$ THEN
+$ OS
+$ WS "#include <types.h>"
+$ IF Has_Socketshr
+$ THEN
+$ WS "#include <socketshr.h>"
+$ ELSE
+$ WS "#include <socket.h>"
+$ ENDIF
+$ WS "#include <in.h>"
+$ WS "int main() {"
+$ WS "struct sockaddr_in6 sin6;"
+$ WS "return (sin6.sin6_scope_id);"
+$ WS "}"
+$ CS
+$ GOSUB compile_ok
+$ IF compile_status .EQ. good_compile
+$ THEN
+$ d_sin6_scope_id="define"
+$ echo "You have sin6_scope_id in the sockaddr_in6 struct."
+$ ELSE
+$ d_sin6_scope_id="undef"
+$ echo "You do not have sin6_scope_id in the sockaddr_in6 struct."
+$ ENDIF
+$ ELSE
+$ d_sin6_scope_id="undef"
+$ echo "You do not have sin6_scope_id in the sockaddr_in6 struct."
+$ ENDIF
+$!
$! Check for nanosleep
$!
$ OS
$ uselargefiles = "undef"
$ ENDIF
$!
+$! Check for st_ino size.
+$!
+$ st_ino_size = 4
+$ OS
+$ WS "#include <sys/stat.h>"
+$ WS "#include <stdio.h>"
+$ WS "#if defined(__DECC) || defined(__DECCXX)"
+$ WS "#include <stdlib.h>
+$ WS "#endif"
+$ WS "int main() {
+$ WS "#''uselargefiles' _LARGEFILE"
+$ WS "#ifdef _LARGEFILE"
+$ WS " printf(""%d\n"", sizeof(__ino64_t));"
+$ WS "#else"
+$ WS " printf(""%d\n"", sizeof(unsigned short)*3);"
+$ WS "#endif"
+$ WS " exit(0);"
+$ WS "}"
+$ CS
+$ GOSUB link_ok
+$ IF link_status .EQ. good_link
+$ THEN
+$ GOSUB just_mcr_it
+$ st_ino_size = tmp
+$ ENDIF
+$ echo "Your st_ino size is ''st_ino_size' bytes."
+$!
$! Tests for hard link, symbolic links, and 7.3 + CRTL features
$!
$ d_lchown = "undef"
$! disk. That would require more work to test, and I am only testing
$! this on 8.2, so that is why the 8.2 test.
$!
-$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
+$ IF (vms_ver .GES. "8.2") .AND. (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX")
$ THEN
$ IF f$getdvi("SYS$DISK","HARDLINKS_SUPPORTED")
$ THEN
$!
$ IF uselargefiles .OR. uselargefiles .eqs. "define"
$ THEN
-$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
+$ IF (vms_ver .GES. "8.2") .AND. (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX")
$ THEN
$ echo4 "Largefile support enabled, so enabling standard stat support too."
$ usestdstat = "y"
$ echo4 "I am disabling symbolic link support."
$ ENDIF
$ ELSE
-$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
+$ IF (vms_ver .GES. "8.2") .AND. (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX")
$ THEN
$ echo4 "-Duselargefiles is required for symbolic link support."
$ echo4 "You did not specify that, so I am disabling symbolic link support."
$ ttyname_r_proto = "0"
$ d_snprintf = "undef"
$ d_vsnprintf = "undef"
-$ if (vms_ver .GES. "7.3-2") .AND. (archname .NES. "VMS_VAX")
+$ if (vms_ver .GES. "7.3-2") .AND. (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX")
$ then
$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with V7.3-2 routines"
$ d_getgrgid_r = "define"
$ d_setreuid = "undef"
$ d_setsid = "undef"
$ ! Disable this section for now.
-$!$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
+$!$ if (vms_ver .GES. "8.2") .AND. (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX")
$ if .NOT. 1
$ then
$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with V7.3-2 UID setting routines"
$ d_fstatvfs = "undef"
$! d_statvfs = "undef"
$ i_sysstatvfs = "undef"
-$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
+$ if (vms_ver .GES. "8.2") .AND. (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX")
$ then
$ echo "Found 64 bit OpenVMS ''vms_ver' -- will build with 8.2 routines"
$ d_fstatvfs = "define"
$ d_htonl="define"
$ d_socket="define"
$ d_sockpair = "undef"
-$ if (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
+$ if (vms_ver .GES. "8.2") .AND. (F$ELEMENT(0, "-", archname) .NES. "VMS_VAX")
$ then
$ echo "Found 64 bit OpenVMS 8.2, will build with socketpair support"
$ d_sockpair = "define"
$ WC "_o='" + obj_ext + "'"
$ WC "alignbytes='" + alignbytes + "'"
$ WC "aphostname='write sys$output f$edit(f$getsyi(\""SCSNODE\""),\""TRIM,LOWERCASE\"")'"
+$ WC "api_revision='" + api_revision + "'"
+$ WC "api_subversion='" + api_subversion + "'"
+$ WC "api_version='" + api_version + "'"
+$ WC "api_versionstring='" + version + "'"
$ WC "ar='" + "'"
$ WC "archlib='" + archlib + "'"
$ WC "archlibexp='" + archlibexp + "'"
$ WC "cf_by='" + cf_by + "'"
$ WC "cf_email='" + cf_email + "'"
$ WC "cf_time='" + cf_time + "'"
+$ WC "charbits='8'"
$ WC "config_args='" + config_args + "'"
$ WC "config_sh='" + config_sh + "'"
$ WC "cpp_stuff='" + cpp_stuff + "'"
$ ELSE
$ WC "d_Gconvert='my_gconvert(x,n,t,b)'"
$ ENDIF
-$ WC "d_PRIEldbl='" + d_PRIEUldbl + "'"
-$ WC "d_PRIFldbl='" + d_PRIFUldbl + "'"
-$ WC "d_PRIGldbl='" + d_PRIGUldbl + "'"
+$ WC "d_PRIEUldbl='" + d_PRIEUldbl + "'"
+$ WC "d_PRIFUldbl='" + d_PRIFUldbl + "'"
+$ WC "d_PRIGUldbl='" + d_PRIGUldbl + "'"
$ WC "d_PRIXU64='" + d_PRIXU64 + "'"
$ WC "d_PRId64='" + d_PRId64 + "'"
$ WC "d_PRIeldbl='" + d_PRIeldbl + "'"
$ WC "d_PRIfldbl='" + d_PRIfldbl + "'"
$ WC "d_PRIgldbl='" + d_PRIgldbl + "'"
+$ WC "d_PRIi64='" + d_PRIi64 + "'"
$ WC "d_PRIo64='" + d_PRIo64 + "'"
$ WC "d_PRIu64='" + d_PRIu64 + "'"
$ WC "d_PRIx64='" + d_PRIx64 + "'"
$ WC "d_attribute_pure='undef'"
$ WC "d_attribute_unused='undef'"
$ WC "d_attribute_warn_unused_result='undef'"
+$ WC "d_prctl='undef'"
+$ WC "d_prctl_set_name='undef'"
$ WC "d_printf_format_null='undef'"
$ WC "d_bcmp='" + d_bcmp + "'"
$ WC "d_bcopy='" + d_bcopy + "'"
$ WC "d_signbit='" + d_signbit + "'"
$ WC "d_sigprocmask='" + d_sigprocmask + "'"
$ WC "d_sigsetjmp='" + d_sigsetjmp + "'"
+$ WC "d_sin6_scope_id='" + d_sin6_scope_id + "'"
$ WC "d_sitearch='define'"
+$ WC "d_sockaddr_sa_len='" + d_sockaddr_sa_len + "'"
$ WC "d_sockatmark='undef'"
$ WC "d_sockatmarkproto='undef'"
$ WC "d_socket='" + d_socket + "'"
$ WC "d_statfs_f_flags='undef'"
$ WC "d_statfs_s='undef'"
$ WC "d_statfsflags='undef'"
+$ WC "d_static_inline='define'"
$ WC "d_stdio_cnt_lval='" + d_stdio_cnt_lval + "'"
$ WC "d_stdio_ptr_lval='" + d_stdio_ptr_lval + "'"
$ WC "d_stdio_ptr_lval_nochange_cnt='" + d_stdio_ptr_lval_nochange_cnt + "'"
$ WC "d_vfork='define'"
$ WC "d_vms_case_sensitive_symbols='" + d_vms_be_case_sensitive + "'" ! VMS
$ WC "d_vms_do_sockets='" + d_vms_do_sockets + "'" ! VMS
+$ WC "d_vms_shorten_long_symbols='" + d_vms_shorten_long_symbols + "'" ! VMS
$ WC "d_void_closedir='define'"
$ WC "d_volatile='define'"
$ WC "d_vprintf='define'"
$ WC "drand01='" + drand01 + "'"
$ WC "dtrace='" + "'"
$!
-$! The extensions symbol may be quite long
+$! The dynamic_ext symbol may be quite long
$!
-$ tmp = "dynamic_ext='" + extensions + "'"
+$ tmp = "dynamic_ext='" + dynamic_ext + "'"
$ WC/symbol tmp
$ DELETE/SYMBOL tmp
$ WC "eagain=' '"
$ WC "eunicefix=':'"
$ WC "exe_ext='" + exe_ext + "'"
$!
-$! The extensions symbol may be quite long
+$! The extensions symbols may be quite long
$!
-$ tmp = "extensions='" + extensions + "'"
-$ WC/symbol tmp
-$ DELETE/SYMBOL tmp
+$ WC/symbol "extensions='", nonxs_ext, " ", nonxs_ext2, " ", dynamic_ext, "'"
$ WC "fflushNULL='define'"
$ WC "fflushall='undef'"
$ WC "fpostype='fpos_t'"
$ WC "netdb_host_type='" + netdb_host_type + "'"
$ WC "netdb_name_type='" + netdb_name_type + "'"
$ WC "netdb_net_type='" + netdb_net_type + "'"
-$ WC "nonxs_ext='" + nonxs_ext + "'"
+$ WC/symbol "nonxs_ext='", nonxs_ext, " ", nonxs_ext2, "'"
$ WC "nveformat='" + nveformat + "'"
+$ WC "nvEUformat='" + nvEUformat + "'"
$ WC "nvfformat='" + nvfformat + "'"
+$ WC "nvFUformat='" + nvFUformat + "'"
$ WC "nvgformat='" + nvgformat + "'"
+$ WC "nvGUformat='" + nvGUformat + "'"
$ WC "nvsize='" + nvsize + "'"
$ WC "nvtype='" + nvtype + "'"
$ WC "o_nonblock=' '"
$ WC "perladmin='" + perladmin + "'"
$ WC "perllibs='" + perllibs + "'"
$ WC "perlpath='" + "''vms_prefix':[000000]Perl''exe_ext'" + "'"
+$ WC "perl_static_inline='static inline'"
$ WC "perl_symbol='" + perl_symbol + "'" ! VMS specific
$ WC "perl_verb='" + perl_verb + "'" ! VMS specific
$ WC "pgflquota='" + pgflquota + "'"
$ WC "sLOCALTIME_max='4294967295'"
$ WC "sLOCALTIME_min='0'"
$ WC "sPRId64='" + sPRId64 + "'"
-$ WC "sPRIEldbl='" + sPRIEUldbl + "'"
-$ WC "sPRIFldbl='" + sPRIFUldbl + "'"
-$ WC "sPRIGldbl='" + sPRIGUldbl + "'"
-$ WC "sPRIX64='" + sPRIXU64 + "'"
+$ WC "sPRIEUldbl='" + sPRIEUldbl + "'"
+$ WC "sPRIFUldbl='" + sPRIFUldbl + "'"
+$ WC "sPRIGUldbl='" + sPRIGUldbl + "'"
+$ WC "sPRIXU64='" + sPRIXU64 + "'"
$ WC "sPRIeldbl='" + sPRIeldbl + "'"
$ WC "sPRIfldbl='" + sPRIfldbl + "'"
$ WC "sPRIgldbl='" + sPRIgldbl + "'"
-$! WC "sPRIi64='" + sPRIi64 + "'"
+$ WC "sPRIi64='" + sPRIi64 + "'"
$ WC "sPRIo64='" + sPRIo64 + "'"
$ WC "sPRIu64='" + sPRIu64 + "'"
$ WC "sPRIx64='" + sPRIx64 + "'"
$ WC "ssizetype='int'"
$ WC "startperl=" + startperl ! This one's special--no enclosing single quotes
$ WC "static_ext='" + static_ext + "'"
+$ WC "st_ino_size='" + st_ino_size + "'"
+$ WC "st_ino_sign='1'"
$ WC "stdchar='" + stdchar + "'"
$ WC "stdio_base='((*fp)->_base)'"
$ WC "stdio_bufsiz='((*fp)->_cnt + (*fp)->_ptr - (*fp)->_base)'"
$ WC "usemorebits='" + usemorebits + "'"
$ WC "usemultiplicity='" + usemultiplicity + "'"
$ WC "usemymalloc='" + usemymalloc + "'"
-$ WC "useperlio='" + useperlio + "'"
+$ WC "useperlio='define'"
$ WC "useposix='false'"
$ WC "usereentrant='undef'"
$ WC "userelocatableinc='undef'"
$ WC "usesecurelog='" + usesecurelog + "'" ! VMS-specific
+$ WC "useshortenedsymbols='" + useshortenedsymbols + "'" ! VMS-specific
$ WC "useshrplib='true'"
$ WC "usesitecustomize='" + usesitecustomize + "'"
$ WC "usesocks='undef'"
$ WC "uvxformat='" + uvxformat + "'"
$ WC "uvXUformat='" + uvXUformat + "'"
$ WC "vendorarch='" + "'"
+$ WC "vaproto='define'"
$ WC "vendorarchexp='" + "'"
$ WC "vendorbin='" + "'"
$ WC "vendorbinexp='" + "'"
$ IF use64bitall .OR. use64bitall .EQS. "define" THEN -
WC "#define USE_64_BIT_ALL"
$ IF be_case_sensitive THEN WC "#define VMS_WE_ARE_CASE_SENSITIVE"
+$ IF shorten_long_symbols THEN WC "#define VMS_SHORTEN_LONG_SYMBOLS"
$ IF use_ieee_math THEN WC "#define USE_IEEE"
$ IF d_herrno .EQS. "undef" THEN WC "#define NEED_AN_H_ERRNO"
$ WC "#define HAS_ENVGETENV"
$ WC "#define PERL_EXTERNAL_GLOB"
-$ IF archname .EQS. "VMS_VAX" .AND. -
+$ IF F$ELEMENT(0, "-", archname) .EQS. "VMS_VAX" .AND. -
ccname .EQS. "DEC" .AND. -
ccversion .LE. 50390006
$ THEN
$ IF kill_by_sigprc .EQS. "define" then WC "#define KILL_BY_SIGPRC"
$ IF unlink_all_versions .OR. unlink_all_versions .EQS. "define" THEN -
WC "#define UNLINK_ALL_VERSIONS"
+$ IF d_sockaddr_sa_len .EQS. "define" then WC "#define _SOCKADDR_LEN 1"
$ CLOSE CONFIG
$!
$ echo4 "Doing variable substitutions on .SH files..."
$ WC "PV=''version'"
$ WC "FLAGS=FLAGS=''extra_flags'"
$ WC "''LARGEFILE_REPLACE'"
+$ WC "ARCHNAME=ARCHNAME=''archname'"
$ close CONFIG
$!
$ echo4 "Extracting ''defmakefile' (with variable substitutions)"
$ echo4 "The perl.cld file is now being written..."
$ OPEN/WRITE CONFIG 'file_2_find'
$ ext = ".exe"
-$ IF (sharedperl .AND. F$EXTRACT(0,7,archname) .EQS. "VMS_AXP") THEN ext := .AXE
-$ IF (sharedperl .AND. F$EXTRACT(0,8,archname) .EQS. "VMS_IA64") THEN ext := .IXE
+$ IF (sharedperl .AND. F$ELEMENT(0, "-", archname) .EQS. "VMS_AXP") THEN ext := .AXE
+$ IF (sharedperl .AND. F$ELEMENT(0, "-", archname) .EQS. "VMS_IA64") THEN ext := .IXE
$ IF (use_vmsdebug_perl)
$ THEN
$ WRITE CONFIG "define verb dbgperl"
$! FIXME: "-" is an operator and illegal in a symbol name -- cpanp-run-perl can't work
$!$ WRITE CONFIG "$ cpanp-run-perl == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp-run-perl.com"""
$ WRITE CONFIG "$ cpanp == """ + perl_setup_perl + " ''vms_prefix':[utils]cpanp.com"""
-$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions)
-$ THEN
-$ WRITE CONFIG "$ dprofpp == """ + perl_setup_perl + " ''vms_prefix':[utils]dprofpp.com"""
-$ ENDIF
$ WRITE CONFIG "$ enc2xs == """ + perl_setup_perl + " ''vms_prefix':[utils]enc2xs.com"""
$ WRITE CONFIG "$ find2perl == """ + perl_setup_perl + " ''vms_prefix':[utils]find2perl.com"""
$ WRITE CONFIG "$ h2ph == """ + perl_setup_perl + " ''vms_prefix':[utils]h2ph.com"""
$ WRITE CONFIG "$ s2p == """ + perl_setup_perl + " ''vms_prefix':[utils]s2p.com"""
$ WRITE CONFIG "$ ptar == """ + perl_setup_perl + " ''vms_prefix':[utils]ptar.com"""
$ WRITE CONFIG "$ ptardiff == """ + perl_setup_perl + " ''vms_prefix':[utils]ptardiff.com"""
+$ WRITE CONFIG "$ ptargrep == """ + perl_setup_perl + " ''vms_prefix':[utils]ptargrep.com"""
$ WRITE CONFIG "$ shasum == """ + perl_setup_perl + " ''vms_prefix':[utils]shasum.com"""
$ WRITE CONFIG "$ splain == """ + perl_setup_perl + " ''vms_prefix':[utils]splain.com"""
$ WRITE CONFIG "$ xsubpp == """ + perl_setup_perl + " ''vms_prefix':[utils]xsubpp.com"""
$ dflt = F$ENVIRONMENT("DEFAULT")
$ IF F$LOCATE("UU]",dflt).EQS.(F$LENGTH(dflt)-3)
$ THEN
+$ IF ( F$SEARCH("[.CXX_REPOSITORY]*.*").NES."" )
+$ THEN
+$ DELETE/NOLOG/NOCONFIRM [.CXX_REPOSITORY]*.*;*
+$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) CXX_REPOSITORY.DIR
+$ ENDIF
$ IF ( F$SEARCH("[]*.*").NES."" ) THEN DELETE/NOLOG/NOCONFIRM []*.*;*
$ SET DEFAULT [-]
$ SET PROTECTION=(SYSTEM:RWED,OWNER:RWED) UU.DIR