$ use_vmsdebug_perl = "n"
$ use64bitall = "n"
$ use64bitint = "n"
-$ uselargefiles = "n"
+$ uselongdouble = "n"
+$ uselargefiles = "y"
$ usestdstat = "n"
-$ usedecterm = "n"
$ usesitecustomize = "n"
$ C_Compiler_Replace = "CC="
$ thread_upcalls = "MTU="
$! 17-DEC-1999 Improved to turn "[.foo.bar]baz.c_buz" into
$! "[.foo.bar]baz_c.buz" to cover unzipped archives and put
$! "[.foo.bar]baz.c_buz,baz_c.buz" into missing list if neither is found.
-$ basename[f$locate(".",basename),1] := _
-$ dot_ele = F$ELEMENT(dots - 1,"_",basename)
+$ dotloc = f$locate(".",basename)
+$ basename[dotloc,1] := "_"
+$ dot_ele = F$ELEMENT(dots - 1,"_",f$extract(dotloc,f$length(basename),basename))
$ basename = -
f$extract(0,f$length(basename)-(f$length(dot_ele)+1),basename) -
+ "." + dot_ele
$!: 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/"
+$ config_sh_es = "''config_sh'/[-]config.sh/"
$ i = 0
$ max = 3
$Config_sh_look:
$ IF (configshfound.NES."") THEN GOTO Config_sh_found
$ ENDIF
$ IF (i.LT.max) THEN GOTO Config_sh_look
-$! genconfig.pl has "osname='VMS'"
$ osname = F$EDIT(F$GETSYI("NODE_SWTYPE"),"COLLAPSE")
$ IF (configshfound.EQS."")
$ THEN
$ 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|usekernelthreads|usedecterm"
+$ config_symbols4 ="|useperlio|usesecurelog|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|"
+$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthread"
$!
$ open/read CONFIG 'config_sh'
$ rd_conf_loop:
$ cf_time = "''wkday' ''mon' ''mday' ''hour':''min':''sec' ''tz' ''year'"
$!
$!: determine the architecture name
-$! genconfig.pl has either archname='VMS_AXP' or 'VMS_VAX'
$! 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.
$ perl_patchlevel = perl_patchlevel - "DEVEL"
$ got_perl_patchlevel = "true"
$ ENDIF
+$ IF ((F$LOCATE("""SMOKE",line).NE.F$LENGTH(line)).AND.(.NOT.got_perl_patchlevel))
+$ THEN
+$ line = F$EDIT(line,"COMPRESS, TRIM")
+$ perl_patchlevel = F$ELEMENT(1,"""",line)
+$ perl_patchlevel = perl_patchlevel - "SMOKE"
+$ got_perl_patchlevel = "true"
+$ ENDIF
+$ IF ((F$LOCATE("""MAINT",line).NE.F$LENGTH(line)).AND.(.NOT.got_perl_patchlevel))
+$ THEN
+$ line = F$EDIT(line,"COMPRESS, TRIM")
+$ perl_patchlevel = F$ELEMENT(1,"""",line)
+$ perl_patchlevel = perl_patchlevel - "MAINT"
+$ got_perl_patchlevel = "true"
+$ ENDIF
$ IF (.NOT. got_patch) .OR. -
(.NOT. got_sub) .OR. -
(.NOT. got_api_revision) .OR. -
$!: What should the include directory be ? (.TLB text libraries)
$ dflt = gcclib_olb
$ rp = "Where are the include files you want to use? "
-$ IF f$length( rp + "[''dflt'] " ).gt.76
+$ IF f$length( rp + "[''dflt'] " ) .GT. 76
$ THEN rp = F$FAO("!AS!/!AS",rp,"[''dflt'] ")
$ ELSE rp = rp + "[''dflt'] "
$ ENDIF
$ THEN
$ echo ""
$ echo "Threaded Perl can be linked to use multiple kernel threads on your system."
-$ echo "This feature allows multiple user threads to make use of multiple CPUs on
+$ echo "This feature allows multiple user threads to make use of multiple CPUs on"
$ echo "a multi-processor machine."
$ bool_dflt = "n"
$ IF f$type(usekernelthreads) .nes. ""
$ THEN
$ thread_kernel = "MTK=MTK=1"
$ usekernelthreads = "define"
+$ ENDIF
$ ENDIF
$ ENDIF
$ ENDIF
$ be_case_sensitive = ans
$! IEEE math?
$ echo ""
-$ echo "Perl normally uses IEEE format (T_FLOAT) floating point numbers"
-$ echo "internally on Alpha, but if you need G_FLOAT for binary compatibility"
+$ echo "Perl normally uses IEEE format (T_FLOAT) floating point numbers on"
+$ echo "Alpha and Itanium, but if you need G_FLOAT for binary compatibility"
$ echo "with an external library or existing data, you may wish to disable"
$ echo "the IEEE math option."
$ bool_dflt = use_ieee_math
$ d_unlink_all_versions = "undef"
$ ENDIF
$!
-$! To avoid 'SYSTEM-F-PROTINSTALL, protected images must be installed'
-$! at run time, we must check that the DECterm image is both present
-$! and installed as a known image.
-$!
-$ decterm_capable = "FALSE"
-$ dflt = "SYS$SHARE:DECW$TERMINALSHR12.EXE"
-$ IF F$SEARCH(dflt) .NES. ""
-$ THEN
-$ decterm_capable = F$FILE_ATTRIBUTES(dflt, "KNOWN")
-$ ELSE
-$ dflt = "SYS$SHARE:DECW$TERMINALSHR.EXE"
-$ IF F$SEARCH(dflt) .NES. "" THEN decterm_capable = F$FILE_ATTRIBUTES(dflt, "KNOWN")
-$ ENDIF
-$!
-$ IF F$TYPE(usedecterm) .NES. ""
-$ THEN
-$ if usedecterm .or. usedecterm .eqs. "define"
-$ then
-$ bool_dflt="y"
-$ else
-$ bool_dflt="n"
-$ endif
-$ ELSE
-$ bool_dflt="n"
-$ ENDIF
-$ IF .NOT. use_debugging_perl THEN bool_dflt = "n"
-$ echo ""
-$ echo "Perl can be built to support DECterms from the Perl debugger"
-$ echo ""
-$ echo "If this does not make any sense to you, just accept the default '" + bool_dflt + "'."
-$ rp = "Build with DECterm Perl debugger support, if available? [''bool_dflt'] "
-$ GOSUB myread
-$ usedecterm=ans
-$ IF (usedecterm .OR. usedecterm .EQS. "define") .AND. .NOT. decterm_capable
-$ THEN
-$ echo4 "No installed DECterm image found, disabling..."
-$ usedecterm = "n"
-$ ENDIF
$! CC Flags
$ echo ""
$ echo "Your compiler may want other flags. For this question you should include"
$ IF xxx .EQS. "SDBM_File/sdbm" THEN goto ext_loop ! sub extension - omit
$ IF xxx .EQS. "Devel/PPPort/harness" THEN goto ext_loop ! sub extension - omit
$ IF F$EXTRACT(0,7,xxx) .EQS. "Encode/" THEN goto ext_loop ! sub extension - omit
-$ IF F$EXTRACT(0,5,xxx) .EQS. "Win32" THEN goto ext_loop ! no Win32 API here
$ IF xxx .EQS. "B/C" THEN goto ext_loop ! sub extension - omit
$ IF F$EXTRACT(0,8,line) .EQS. "vms/ext/" THEN -
xxx = "VMS/" + F$EXTRACT(8,line_len - 20,line)
$ THEN
$ dflt = dflt - "Socket" ! optional on VMS
$ ENDIF
-$ IF .NOT. use_threads THEN dflt = dflt - "Thread"
+$ ! Build this one only for threads without ithreads
+$ IF F$TYPE(useithreads) .EQS. "" .OR. .NOT. use_threads
+$ THEN
+$ dflt = dflt - "Thread"
+$ ELSE
+$ IF useithreads .OR. useithreads .EQS. "define" THEN dflt = dflt - "Thread"
+$ ENDIF
+$ dflt = dflt - "Win32API/File" - "Win32CORE" - "Win32" ! need Dave Cutler's other project
$ dflt = F$EDIT(dflt,"TRIM,COMPRESS")
$!
$! Ask for their default list of extensions to build
$ GOSUB myread
$ pager = ans
$!
-$! update [.vms]config.vms here
-$!
$! update makefile here
$! echo4 "Updating makefile..."
$!
$ IF use_ieee_math
$ THEN
$ extra_flags = "''extra_flags'" + "/float=ieee/ieee=denorm"
+$ ELSE
+$ IF (archname.EQS."VMS_IA64")
+$ THEN
+$ extra_flags = "''extra_flags'" + "/float=g_float"
+$ ENDIF
$ ENDIF
$ IF be_case_sensitive
$ THEN
$ quadtype = "long long"
$ uquadtype = "unsigned long long"
$ quadkind = "QUAD_IS_LONG_LONG"
-$ d_frexpl = "define"
-$ d_isnan = "define"
-$ d_isnanl = "define"
-$ d_modfl = "define"
-$ d_modflproto = "define"
$ ELSE
$ d_PRId64 = "undef"
$ d_PRIXU64 = "undef"
$ quadtype = "long"
$ uquadtype = "unsigned long"
$ quadkind = "QUAD_IS_LONG"
+$ ENDIF
+$!
+$ IF archname .NES. "VMS_VAX"
+$ THEN
+$ d_frexpl = "define"
+$ d_modfl = "define"
+$ d_modflproto = "define"
+$ ELSE
$ d_frexpl = "undef"
-$ d_isnan = "undef"
-$ d_isnanl = "undef"
$ d_modfl = "undef"
$ d_modflproto = "undef"
$ ENDIF
$!
+$ IF useieee .OR. useieee .EQS. "define"
+$ THEN
+$ d_isnan = "define"
+$ d_isnanl = "define"
+$ ELSE
+$ d_isnan = "undef"
+$ d_isnanl = "undef"
+$ ENDIF
+$!
$! Now some that we build up
$!
$ IF use_threads
$ WS "#if defined(F_SETLK) && defined(F_SETLKW)"
$ WS " struct flock flock;"
$ WS " int retval, fd;"
-$ WS " fd = open(""try.c"", O_RDONLY);"
+$ WS " fd = open(""[-]perl.c"", O_RDONLY);"
$ WS " flock.l_type = F_RDLCK;"
$ WS " flock.l_whence = SEEK_SET;"
$ WS " flock.l_start = flock.l_len = 0;"
$!
$ IF uselargefiles .OR. uselargefiles .eqs. "define"
$ THEN
-$ echo4 "Largefile support enabled (plus standard stat support on V8.2 and later)"
-$ usestdstat = "y"
$ IF (vms_ver .GES. "8.2") .AND. (archname .NES. "VMS_VAX")
$ THEN
+$ echo4 "Largefile support enabled, so enabling standard stat support too."
+$ usestdstat = "y"
$ echo4 -
"Looking for the realpath() function to indicate symbolic link support..."
$ OS
$! Use the same list of signals the CRTL does for recent systems, but cook our own for very old systems.
$! Note that the list controls what signals can be caught by name as well as what can be raised via kill().
$!
-$ if vms_ver .LT. "6.2"
+$ if vms_ver .LTS. "6.2"
$ then
$! since SIGBUS and SIGSEGV indistinguishable, make them the same here.
$ sig_name="ZERO HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM ABRT"
$ WC "PERL_API_VERSION='" + api_version + "'"
$ WC "PERL_API_SUBVERSION='" + api_subversion + "'"
$ WC "PERL_PATCHLEVEL='" + perl_patchlevel + "'"
+$ WC "perl_patchlevel='" + perl_patchlevel + "'"
$ WC "PERL_CONFIG_SH='true'"
$ WC "_a='" + lib_ext + "'"
$ WC "_exe='" + exe_ext + "'"
$ WC "sh='MCR'"
$ WC "shmattype='" + " '"
$ WC "shortsize='" + shortsize + "'"
-$ WC "shrplib='define'"
$ IF (f$length(sig_name) .GE. 244)
$ THEN
$ tmp = "sig_name='" + sig_name + "'"
$ WC "usereentrant='undef'"
$ WC "userelocatableinc='undef'"
$ WC "usesecurelog='" + usesecurelog + "'" ! VMS-specific
+$ WC "useshrplib='true'"
$ WC "usesitecustomize='" + usesitecustomize + "'"
$ WC "usesocks='undef'"
$ WC "usethreads='" + usethreads + "'"
$! Okay, we've gotten here. Build munchconfig.exe
$ COPY/NOLOG [-.vms]munchconfig.c []
$ COPY/NOLOG [-.vms]'Makefile_SH' []
-$ 'Perl_CC' munchconfig.c
+$ 'Perl_CC' 'ccflags' munchconfig.c
$ IF Needs_Opt
$ THEN
$ OPEN/WRITE CONFIG []munchconfig.opt
$ 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 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"
$! WC "#define PERL_IGNORE_FPUSIG SIGFPE"
$ ENDIF
$ IF kill_by_sigprc .EQS. "define" then WC "#define KILL_BY_SIGPRC"
-$ IF usedecterm .OR. usedecterm .EQS. "define" then WC "#define USE_VMS_DECTERM"
$ IF unlink_all_versions .OR. unlink_all_versions .EQS. "define" THEN -
WC "#define UNLINK_ALL_VERSIONS"
$ CLOSE CONFIG
$ ELSE
$ LARGEFILE_REPLACE = "LARGEFILE="
$ ENDIF
-$ IF usedecterm .OR. usedecterm .EQS. "define"
-$ THEN
-$ IF F$SEARCH("SYS$SHARE:DECW$TERMINALSHR12.EXE") .nes. ""
-$ THEN
-$ DECTERM_REPLACE = "DECTERMLIB=DECTERMLIB=DECW$TERMINALSHR12/SHARE"
-$ ELSE
-$ DECTERM_REPLACE = "DECTERMLIB=DECTERMLIB=DECW$TERMINALSHR/SHARE"
-$ ENDIF
-$ ELSE
-$ DECTERM_REPLACE = "DECTERMLIB=DECTERMLIB="
-$ ENDIF
+$!
+$! In order not to stress the tiny command buffer on pre-7.3-2 systems,
+$! we put the following substitutions in a file and pass the file to
+$! munchconfig.
+$!
+$ open/write CONFIG extra_subs.txt
+$ WC := write CONFIG
+$ WC "''DECC_REPLACE'"
+$ WC "''DECCXX_REPLACE'"
+$ WC "''ARCH_TYPE'"
+$ WC "''GNUC_REPLACE'"
+$ WC "''SOCKET_REPLACE'"
+$ WC "''THREAD_REPLACE'"
+$ WC "''C_Compiler_Replace'"
+$ WC "''MALLOC_REPLACE'"
+$ WC "''THREAD_UPCALLS'"
+$ WC "''THREAD_KERNEL'"
+$ WC "PV=''version'"
+$ WC "FLAGS=FLAGS=''extra_flags'"
+$ WC "''LARGEFILE_REPLACE'"
+$ close CONFIG
+$!
$ echo4 "Extracting ''defmakefile' (with variable substitutions)"
$ DEFINE/USER_MODE sys$output 'UUmakefile'
-$ mcr []munchconfig 'config_sh' 'Makefile_SH' "''DECC_REPLACE'" "''DECCXX_REPLACE'" "''ARCH_TYPE'" "''GNUC_REPLACE'" -
-"''SOCKET_REPLACE'" "''THREAD_REPLACE'" "''C_Compiler_Replace'" "''MALLOC_REPLACE'" -
-"''THREAD_UPCALLS'" "''THREAD_KERNEL'" "PV=''version'" "FLAGS=FLAGS=''extra_flags'" "''LARGEFILE_REPLACE'" -
-"''DECTERM_REPLACE'"
+$ mcr []munchconfig 'config_sh' 'Makefile_SH' -f extra_subs.txt
$! Clean up after ourselves
$ DELETE/NOLOG/NOCONFIRM []munchconfig.exe;
+$ DELETE/NOLOG/NOCONFIRM []extra_subs.txt;
$!
$ echo4 "Extracting make_ext.com (without variable substitutions)"
$ Create Sys$Disk:[-]make_ext.com
$! NOTE: This file is extracted as part of the VMS configuration process.
$! Any changes made to it directly will be lost. If you need to make any
$! changes, please edit the template in Configure.Com instead.
-$ def = F$Environment("Default")
+$ mydefault = F$Environment("Default")
$! p1 - how to invoke miniperl (passed in from descrip.mms)
$ p1 = F$Edit(p1,"Upcase,Compress,Trim")
$ If F$Locate("MCR ",p1).eq.0 Then p1 = F$Extract(3,255,p1)
miniperl "-I[''up'.lib]" Makefile.PL "INST_LIB=[''up'.lib]" "INST_ARCHLIB=[''up'.lib]" "PERL_CORE=1"
$ makeutil 'targ'
$ i = i + 1
-$ Set Def &def
+$ Set Def &mydefault
$ Goto next_ext
$ done:
$ sts = $Status
-$ Set Def &def
+$ Set Def &mydefault
$ Exit sts
$!-- make_ext.com
$EndOfTpl$
$ WRITE CONFIG "$! define SYS$TIMEZONE_DIFFERENTIAL ''tzd'"
$ ENDIF
$ WRITE CONFIG "$!"
-$ WRITE CONFIG "$! Symbols for commonly used programs:"
+$ WRITE CONFIG "$! Symbols for Perl-based utility programs:"
$ WRITE CONFIG "$!"
$ WRITE CONFIG "$ c2ph == """ + perl_setup_perl + " ''vms_prefix':[utils]c2ph.com"""
+$ WRITE CONFIG "$ config_data== """ + perl_setup_perl + " ''vms_prefix':[utils]config_data.com"""
+$ WRITE CONFIG "$ corelist == """ + perl_setup_perl + " ''vms_prefix':[utils]corelist.com"""
$ WRITE CONFIG "$ cpan == """ + perl_setup_perl + " ''vms_prefix':[utils]cpan.com"""
+$ WRITE CONFIG "$ cpan2dist == """ + perl_setup_perl + " ''vms_prefix':[utils]cpan2dist.com"""
+$! 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"""
$ WRITE CONFIG "$ psed == """ + perl_setup_perl + " ''vms_prefix':[utils]psed.com"""
$ WRITE CONFIG "$ pstruct == """ + perl_setup_perl + " ''vms_prefix':[utils]pstruct.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 "$ 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"""
$ CLOSE CONFIG