X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/60f153dbff502bbba0af0d17c0358a2a047d68e6..1ab9ebc1154972420d469084d44fa5abd7f8a1a6:/configure.com diff --git a/configure.com b/configure.com index c0fb94b..59aa4c5 100644 --- a/configure.com +++ b/configure.com @@ -44,12 +44,14 @@ $ extra_flags = "" $ 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" $ use64bitall = "n" $ use64bitint = "n" -$ uselargefiles = "n" +$ uselongdouble = "n" +$ uselargefiles = "y" $ usestdstat = "n" $ usesitecustomize = "n" $ C_Compiler_Replace = "CC=" @@ -60,7 +62,9 @@ $ use_pack_malloc = "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] @@ -367,11 +371,20 @@ $! $Shut_up: $ IF F$Mode() .eqs. "BATCH" $ THEN -$ STDOUT = F$PARSE(F$GETQUI("DISPLAY_ENTRY", "JOB_NAME"), - - F$GETQUI("DISPLAY_ENTRY", "LOG_SPECIFICATION"), ".LOG") -$ WRITE SYS$OUTPUT "Warning: Executing in batch mode. To avoid file locking conflicts," -$ WRITE SYS$OUTPUT "output intended for SYS$OUTPUT will be sent to a new version" +$ x = F$GETQUI("CANCEL_OPERATION") ! clear the deck +$ x = "THIS_JOB" +$ bproc_queue = f$getqui("DISPLAY_QUEUE","QUEUE_NAME","*",x) +$ bproc_entry = f$getqui("DISPLAY_JOB","ENTRY_NUMBER",,x) +$ bproc_name = f$getqui("DISPLAY_JOB","JOB_NAME",,x) +$ bproc_log_spec = f$getqui("DISPLAY_JOB","LOG_SPECIFICATION",,x) +$ STDOUT = F$PARSE(bproc_name, bproc_log_spec, ".LOG") +$ WRITE SYS$OUTPUT "Writing output of entry ''bproc_entry' in queue ''bproc_queue' to a new version of: " $ WRITE SYS$OUTPUT STDOUT +$ DELETE_/SYMBOL x +$ DELETE_/SYMBOL bproc_queue +$ DELETE_/SYMBOL bproc_entry +$ DELETE_/SYMBOL bproc_name +$ DELETE_/SYMBOL bproc_log_spec $ ELSE $ STDOUT = F$TRNLNM("SYS$OUTPUT") $ ENDIF @@ -467,6 +480,11 @@ $ IF ( F$SEARCH("UU.DIR").EQS."" ) $ 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 @@ -543,14 +561,22 @@ $ THEN $! 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 $ found = F$SEARCH(dirname + basename) $ file_2_find = file_2_find + "," + basename $ ENDIF +$ tildeloc = f$locate("~",basename) +$ IF (found .EQS. "" .AND. tildeloc .LT. f$length(basename)) +$ THEN +$ basename[tildeloc,1] := "_" +$ found = F$SEARCH(dirname + basename) +$ file_2_find = file_2_find + "," + basename +$ ENDIF $ IF (found .EQS. "") $ THEN $ WRITE MISSING file_2_find @@ -851,7 +877,6 @@ $ 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" @@ -867,7 +892,7 @@ $! $!: 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: @@ -879,7 +904,6 @@ $ configshfound = F$SEARCH(config_sh) $ 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 @@ -903,9 +927,9 @@ $! $ config_symbols0 ="|archlib|archlibexp|bin|binexp|builddir|cf_email|config_sh|installarchlib|installbin|installman1dir|installman3dir|" $ 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|usemultiplicity|usemymalloc|usedebugging_perl|useperlio|usesecurelog|" -$ config_symbols4 ="|usethreads|usevmsdebug|usefaststdio|usemallocwrap|unlink_all_versions|uselargefiles|usesitecustomize|" -$ config_symbols5 ="|buildmake|builder|usethreadupcalls|usekernelthreads" +$ 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|useshortenedsymbols" $! $ open/read CONFIG 'config_sh' $ rd_conf_loop: @@ -942,7 +966,7 @@ $ delete/symbol val $ delete/symbol dsym $ if f$type(usedebugging_perl) .nes. "" $ then -$ useperldebug = usedebugging_perl +$ DEBUGGING = usedebugging_perl $ delete/symbol usedebugging_perl $ endif $! @@ -1125,7 +1149,6 @@ $ 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' $! 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. @@ -1371,6 +1394,20 @@ $ perl_patchlevel = F$ELEMENT(1,"""",line) $ 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. - @@ -1388,9 +1425,10 @@ $ SET NOON $ OPEN/READ PATCH [-].patch $ READ PATCH line $ CLOSE PATCH -$ tmp = F$EDIT(line,"COLLAPSE") +$ tmp = F$EDIT(line,"TRIM,COMPRESS") +$ IF F$ELEMENT(3, " ", tmp) .NES. "" THEN tmp = F$ELEMENT(3, " ", tmp) $ SET ON -$ IF tmp .GT. perl_patchlevel then perl_patchlevel = tmp +$ IF tmp .NES. "" THEN perl_patchlevel = tmp $ ENDIF $! $ version_patchlevel_string = "version ''patchlevel' subversion ''subversion'" @@ -2082,7 +2120,7 @@ $Include_dirs: $!: 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 @@ -2281,10 +2319,10 @@ $ echo "enables the -D switch, at the cost of some performance. It" $ 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 @@ -2351,7 +2389,6 @@ $ THEN $ echo "" $ echo "Since you have chosen a maximally 64-bit build, I'm also turning on" $ echo "the use of 64-bit integers." -$ echo "I am also setting the default to use large files if available." $ use64bitint="Y" $ ENDIF $! @@ -2369,6 +2406,20 @@ $ 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" @@ -2462,7 +2513,7 @@ $ IF (archname .NES. "VMS_VAX") .AND. ("''f$extract(1,3, f$getsyi(""version" $ 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. "" @@ -2475,6 +2526,7 @@ $ IF ans $ THEN $ thread_kernel = "MTK=MTK=1" $ usekernelthreads = "define" +$ ENDIF $ ENDIF $ ENDIF $ ENDIF @@ -2482,8 +2534,6 @@ $ ENDIF $ ENDIF $ IF F$TYPE(usethreadupcalls) .EQS. "" THEN usethreadupcalls = "undef" $ IF F$TYPE(usekernelthreads) .EQS. "" THEN usekernelthreads = "undef" -$ IF archname .NES. "VMS_VAX" -$ THEN $! Case sensitive? $ echo "" $ echo "By default, perl (and pretty much everything else on VMS) uses" @@ -2505,10 +2555,26 @@ $ endif $ 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 archname .NES. "VMS_VAX" +$ THEN $! 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 @@ -2525,13 +2591,14 @@ $ rp = "Use IEEE math? [''bool_dflt'] " $ 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" @@ -2556,6 +2623,7 @@ $ d_unlink_all_versions = "define" $ ELSE $ d_unlink_all_versions = "undef" $ ENDIF +$! $! CC Flags $ echo "" $ echo "Your compiler may want other flags. For this question you should include" @@ -2681,25 +2749,102 @@ $ 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/" .AND. - - F$EXTRACT(0,8,line) .NES. "vms/ext/" THEN goto ext_loop + 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) -$ line_len = F$LENGTH(line) -$ IF F$EXTRACT(line_len - 12,12,line) .NES. "/Makefile.PL" THEN goto ext_loop -$ IF F$EXTRACT(0,4,line) .EQS. "ext/" THEN - - xxx = F$EXTRACT(4,line_len - 16,line) +$ IF F$EXTRACT(0,4,line) .EQS. "ext/" +$ THEN +$ 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 -$ 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 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) -$ known_extensions = known_extensions + " ''xxx'" +$! +$! (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 +$ IF extspec .NES. "" +$ THEN +$ extspec = extspec + "/" +$ ENDIF +$ extspec = extspec + before +$ idx = idx + 1 +$ goto 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 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) +$ GOTO may_already_have_extension +$ ENDIF +$! But "Foo" may just be part of "Foo-Bar" so check for equality. +$ xxx = F$EXTRACT(idx, extlen - idx, xxx) +$ IF F$ELEMENT(0, " ", xxx) .EQS. extspec +$ THEN +$ RETURN 3 +$ ELSE +$ xxx = F$EXTRACT(F$LENGTH(extspec) + 1, extlen, xxx) + GOTO may_already_have_extension +$ ENDIF +$! +$ found_new_extension: +$ 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 xxx +$ 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" @@ -2717,8 +2862,12 @@ $ IF .NOT. Has_socketshr .AND. .NOT. Has_Dec_C_Sockets $ THEN $ dflt = dflt - "Socket" ! optional on VMS $ ENDIF -$ IF .NOT. use_threads THEN dflt = dflt - "Thread" +$ 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 "" @@ -2730,7 +2879,7 @@ $ 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 "" @@ -2866,8 +3015,6 @@ $ rp="What pager is used on your system? [''dflt'] " $ GOSUB myread $ pager = ans $! -$! update [.vms]config.vms here -$! $! update makefile here $! echo4 "Updating makefile..." $! @@ -2895,11 +3042,31 @@ $! $ 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 +$ 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" @@ -2922,7 +3089,7 @@ $! $ 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" +$ if .not. useperlio .or. useperlio .eqs. "undef" then bool_dflt = "n" $ endif $ IF .NOT. silent $ THEN @@ -3024,6 +3191,12 @@ $ d_vms_be_case_sensitive = "define" $ 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 @@ -3032,12 +3205,15 @@ $! $ ccdlflags="" $ cccdlflags="" $! +$! FIXME -- This section does not really handle all the different permutations +$! of 64-bitness, and it does not provide for the /POINTER_SIZE=64 compiler +$! option that would be necessary to support the "explicit 64-bit interfaces" +$! promised by -Dusemorebits. +$! +$ usemorebits = "undef" $ IF use64bitint .OR. use64bitint .EQS. "define" $ THEN $ use64bitint = "define" -$ uselongdouble = "define" -$ alignbytes="16" -$ usemorebits = "define" $ ivdformat="""Ld""" $ uvuformat="""Lu""" $ uvoformat="""Lo""" @@ -3045,8 +3221,6 @@ $ uvxformat="""Lx""" $ uvXUformat="""LX""" $ ELSE $ use64bitint = "undef" -$ uselongdouble = "undef" -$ usemorebits = "undef" $ ivdformat="""ld""" $ uvuformat="""lu""" $ uvoformat="""lo""" @@ -3055,10 +3229,13 @@ $ uvXUformat="""lX""" $ ENDIF $ IF uselongdouble .OR. uselongdouble .EQS. "define" $ THEN +$ uselongdouble = "define" +$ alignbytes="16" $ nveformat="""Le""" $ nvfformat="""Lf""" $ nvgformat="""Lg""" $ ELSE +$ uselongdouble = "undef" $ nveformat="""e""" $ nvfformat="""f""" $ nvgformat="""g""" @@ -3120,6 +3297,7 @@ $ THEN d_mymalloc="define" $ ELSE d_mymalloc="undef" $ ENDIF $! +$ usedevel="undef" $ usedl="define" $ startperl="""$ perl 'f$env(\""procedure\"")' \""'"+"'p1'\"" \""'"+"'p2'\"" \""'"+"'p3'\"" \""'"+"'p4'\"" \""'"+"'p5'\"" \""'"+"'p6'\"" \""'"+"'p7'\"" \""'"+"'p8'\""!\n" $ startperl=startperl + "$ exit++ + ++$status!=0 and $exit=$status=undef; while($#ARGV != -1 and $ARGV[$#ARGV] eq '"+"'){pop @ARGV;}""" @@ -3141,9 +3319,8 @@ $! perllibs should be libs with all non-core libs (such as gdbm) removed. $! $ perllibs=libs $! -$! Are we 64 bit? $! -$ IF use64bitint .OR. use64bitint .EQS. "define" +$ IF archname .NES. "VMS_VAX" $ THEN $ d_PRId64 = "define" $ d_PRIu64 = "define" @@ -3159,10 +3336,9 @@ $ sPRIx64 = """Lx""" $ d_quad = "define" $ quadtype = "long long" $ uquadtype = "unsigned long long" -$ quadkind = "QUAD_IS_LONG_LONG" +$ quadkind = "3" +$! $ d_frexpl = "define" -$ d_isnan = "define" -$ d_isnanl = "define" $ d_modfl = "define" $ d_modflproto = "define" $ ELSE @@ -3178,16 +3354,24 @@ $ sPRIo64 = "" $ sPRIu64 = "" $ sPRIx64 = "" $ d_quad = "undef" -$ quadtype = "long" -$ uquadtype = "unsigned long" -$ quadkind = "QUAD_IS_LONG" +$ quadtype = "undef" +$ uquadtype = "undef" +$ quadkind = "undef" +$! $ 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 @@ -3900,6 +4084,12 @@ $ tmp = "sys/mode.h" $ GOSUB inhdr $ i_sysmode = tmp $! +$! Check for poll.h +$! +$ tmp = "sys/poll.h" +$ gosub inhdr +$ i_syspoll = tmp +$! $! Check for sys/access.h $! $ tmp = "sys/access.h" @@ -3953,7 +4143,7 @@ $ WS "int main() {" $ 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;" @@ -4682,6 +4872,43 @@ $ ELSE $ 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 " +$ WS "#endif" +$ WS "#define _SOCKADDR_LEN" +$ WS "#include " +$ IF Has_Socketshr +$ THEN +$ WS "#include " +$ ELSE +$ WS "#include " +$ 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 nanosleep $! $ OS @@ -4876,10 +5103,10 @@ $ ENDIF $! $ 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 @@ -5358,12 +5585,16 @@ $ IF use64bitint .OR. use64bitint .EQS. "define" $ THEN $ ivtype = "''i64type'" $ uvtype = "''u64type'" -$ nvtype="long double" $ ELSE $ i64size="undef" $ u64size="undef" $ ENDIF $! +$ IF uselongdouble .OR. uselongdouble .EQS. "define" +$ THEN +$ nvtype="long double" +$ ENDIF +$! $ tmp = "''ivtype'" $ GOSUB type_size_check $ ivsize = tmp @@ -5427,53 +5658,131 @@ $ echo "(IV will be ""''ivtype'"", ''ivsize' bytes)" $ echo "(UV will be ""''uvtype'"", ''uvsize' bytes)" $ echo "(NV will be ""''nvtype'"", ''nvsize' bytes)" $! -$ echo4 "Checking whether your NVs can preserve your UVs..." +$ d_nv_preserves_uv = "undef" +$ echo4 "Checking how many bits of your UVs your NVs can preserve..." $ OS $ WS "#if defined(__DECC) || defined(__DECCXX)" $ WS "#include " $ WS "#endif" $ WS "#include " $ WS "int main() {" -$ WS " ''uvtype' k = (''uvtype')~0, l;" -$ WS " ''nvtype' d;" -$ WS " l = k;" -$ WS " d = (''nvtype')l;" -$ WS " l = (''uvtype')d;" -$ WS " if (l == k)" -$ WS " printf(""preserve\n"");" +$ WS " ''uvtype' u = 0;" +$ WS " int n = 8 * ''uvsize';" +$ WS " int i;" +$ WS " for (i = 0; i < n; i++) {" +$ WS " u = u << 1 | (''uvtype')1;" +$ WS " if ((''uvtype')(''nvtype')u != u)" +$ WS " break;" +$ WS " }" +$ WS " printf(""%d\n"", i);" $ WS " exit(0);" $ WS "}" $ CS $ GOSUB compile -$ IF tmp .EQS. "preserve" -$ THEN +$ nv_preserves_uv_bits = tmp +$ IF F$INTEGER(nv_preserves_uv_bits) .GE. (F$INTEGER(uvsize) * 8) +$ THEN $ d_nv_preserves_uv = "define" -$ echo "Yes, they can." -$ nv_preserves_uv_bits = F$STRING(F$INTEGER(uvsize) * 8) +$ echo "Your NVs can preserve all ''nv_preserves_uv_bits' bits of your UVs." $ ELSE -$ d_nv_preserves_uv = "undef" -$ echo "No, they can't." -$ echo4 "Checking how many bits of your UVs your NVs can preserve..." -$ OS -$ WS "#if defined(__DECC) || defined(__DECCXX)" -$ WS "#include " -$ WS "#endif" -$ WS "#include " -$ WS "int main() {" -$ WS " ''uvtype' u = 0;" -$ WS " int n = 8 * ''uvsize';" -$ WS " int i;" -$ WS " for (i = 0; i < n; i++) {" -$ WS " u = u << 1 | (''uvtype')1;" -$ WS " if ((''uvtype')(''nvtype')u != u)" -$ WS " break;" -$ WS " }" -$ WS " printf(""%d\n"", i);" -$ WS " exit(0);" -$ WS "}" -$ CS -$ GOSUB compile -$ nv_preserves_uv_bits = tmp +$ d_nv_preserves_uv = "undef"" +$ echo "Your NVs can preserve only ''nv_preserves_uv_bits' bits of your UVs." +$ ENDIF +$! +$ nv_overflows_integers_at = "0" +$ echo4 "Checking to find the largest integer value your NVs can hold..." +$ OS +$ WS "#include " +$ WS "" +$ WS "typedef ''nvtype' NV;" +$ WS "" +$ WS "int" +$ WS "main() {" +$ WS " NV value = 2;" +$ WS " int count = 1;" +$ WS "" +$ WS " while(count < 256) {" +$ WS " volatile NV up = value + 1.0;" +$ WS " volatile NV negated = -value;" +$ WS " volatile NV down = negated - 1.0;" +$ WS " volatile NV got_up = up - value;" +$ WS " int up_good = got_up == 1.0;" +$ WS " int got_down = down - negated;" +$ WS " int down_good = got_down == -1.0;" +$ WS "" +$ WS " if (down_good != up_good) {" +$ WS " fprintf(stderr," +$ WS " ""Inconsistency - up %d %f; down %d %f; for 2**%d (%.20f)\n""," +$ WS " up_good, (double) got_up, down_good, (double) got_down," +$ WS " count, (double) value);" +$ WS " return 1;" +$ WS " }" +$ WS " if (!up_good) {" +$ WS " while (1) {" +$ WS " if (count > 8) {" +$ WS " count -= 8;" +$ WS " fputs(""256.0"", stdout);" +$ WS " } else {" +$ WS " count--;" +$ WS " fputs(""2.0"", stdout);" +$ WS " }" +$ WS " if (!count) {" +$ WS " puts("""");" +$ WS " return 0;" +$ WS " }" +$ WS " fputs(""*"", stdout);" +$ WS " }" +$ WS " }" +$ WS " value *= 2;" +$ WS " ++count;" +$ WS " }" +$ WS " fprintf(stderr, ""Cannot overflow integer range, even at 2**%d (%.20f)\n""," +$ WS " count, (double) value);" +$ WS " return 1;" +$ WS "}" +$ CS +$ GOSUB compile +$ IF F$LENGTH(tmp) .GT. 0 +$ THEN +$ IF F$EXTRACT(0,1,tmp) .EQS. "2" +$ THEN +$ echo "The largest integer your NVs can preserve is equal to ''tmp'" +$ nv_overflows_integers_at = tmp +$ ELSE +$ echo "Cannot determine the largest integer value your NVs can hold, unexpected output" +$ echo "''tmp'" +$ ENDIF +$ ELSE +$ echo "Cannot determine the largest integer value your NVs can hold" +$ ENDIF +$! +$! Check for signbit (must already know nvtype) +$! +$ echo4 "Checking to see if you have signbit() available to work on ''nvtype'..." +$ OS +$ WS "#if defined(__DECC) || defined(__DECCXX)" +$ WS "#include " +$ WS "#endif" +$ WS "#include " +$ WS "#include " +$ WS "int main()" +$ WS "{" +$ WS " ''nvtype' x = 0.0;" +$ WS " ''nvtype' y = -0.0;" +$ WS " if ((signbit(x) == 0) && (signbit(y) != 0))" +$ WS " printf(""1\n"");" +$ WS " else" +$ WS " printf(""0\n"");" +$ WS "}" +$ CS +$ GOSUB compile +$ IF tmp .EQS. "1" +$ THEN +$ d_signbit = "define" +$ echo4 "Yes." +$ ELSE +$ d_signbit = "undef" +$ echo4 "Nope." $ ENDIF $! $ echo4 "Checking if kill() uses SYS$FORCEX or can't be called from a signal handler..." @@ -5525,7 +5834,7 @@ $! $! 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" @@ -5597,6 +5906,7 @@ $ WC "PERL_API_REVISION='" + api_revision + "'" $ 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 + "'" @@ -5639,6 +5949,7 @@ $ WC "ccversion='" + ccversion + "'" $ 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 + "'" @@ -5671,15 +5982,20 @@ $ WC "d_accessx='undef'" $ WC "d_aintl='undef'" $ WC "d_alarm='define'" $ WC "d_archlib='define'" +$ WC "d_asctime64='undef'" $ WC "d_atolf='" + d_atolf + "'" $ WC "d_atoll='" + d_atoll + "'" $ WC "d_attribute_format='" + d_attribut + "'" +$ WC "d_attribute_deprecated='undef'" $ WC "d_attribute_malloc='undef'" $ WC "d_attribute_nonnull='undef'" $ WC "d_attribute_noreturn='undef'" $ 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_bincompat3='undef'" @@ -5702,11 +6018,15 @@ $ WC "d_copysignl='define'" $ WC "d_cplusplus='" + d_cplusplus + "'" $ WC "d_crypt='define'" $ WC "d_csh='undef'" +$ WC "d_ctermid='define'" +$ WC "d_ctime64='undef'" $ WC "d_cuserid='define'" $ WC "d_c99_variadic_macros='undef'" $ WC "d_dbl_dig='define'" $ WC "d_dbminitproto='undef'" $ WC "d_difftime='define'" +$ WC "d_difftime64='undef'" +$ WC "d_dir_dd_fd='undef'" $ WC "d_dirfd='undef'" $ WC "d_dirnamlen='define'" $ WC "d_dlerror='undef'" @@ -5751,6 +6071,9 @@ $ WC "d_fstatvfs='" + d_fstatvfs + "'" $ WC "d_fsync='undef'" $ WC "d_ftello='" + d_ftello + "'" $ WC "d_futimes='undef'" +$ WC "d_gdbmndbm_h_uses_prototypes='undef'" +$ WC "d_gdbm_ndbm_h_uses_prototypes='undef'" +$ WC "d_getaddrinfo='undef'" $ WC "d_getcwd='define'" $ WC "d_getespwnam='undef'" $ WC "d_getfsstat='undef'" @@ -5765,6 +6088,7 @@ $ WC "d_getitimer='" + d_getitimer + "'" $ WC "d_getlogin='define'" $ WC "d_getmnt='undef'" $ WC "d_getmntent='undef'" +$ WC "d_getnameinfo='undef'" $ WC "d_getnbyaddr='" + d_getnbyaddr + "'" $ WC "d_getnbyname='" + d_getnbyname + "'" $ WC "d_getnent='" + d_getnent + "'" @@ -5787,6 +6111,7 @@ $ WC "d_getsent='" + d_getsent + "'" $ WC "d_getservprotos='" + d_getservprotos + "'" $ WC "d_getspnam='undef'" $ WC "d_gettimeod='" + d_gettimeod + "'" +$ WC "d_gmtime64='undef'" $ WC "d_gnulibc='undef'" $ WC "d_grpasswd='undef'" $ WC "d_hasmntopt='undef'" @@ -5795,6 +6120,8 @@ $ WC "d_ilogbl='undef'" $ WC "d_inc_version_list='undef'" $ WC "d_index='" + d_index + "'" $ WC "d_inetaton='undef'" +$ WC "d_inetntop='undef'" +$ WC "d_inetpton='undef'" $ WC "d_int64_t='" + d_int64_t + "'" $ WC "d_isascii='define'" $ WC "d_isfinite='undef'" @@ -5807,6 +6134,7 @@ $ WC "d_ldbl_dig='define'" $ WC "d_libm_lib_version='undef'" $ WC "d_link='" + d_link + "'" $ WC "d_llseek='undef'" +$ WC "d_localtime64='undef'" $ WC "d_locconv='" + d_locconv + "'" $ WC "d_lockf='undef'" $ WC "d_longdbl='" + d_longdbl + "'" @@ -5831,6 +6159,7 @@ $ WC "d_mknod='undef'" $ WC "d_mkstemp='" + d_mkstemp + "'" $ WC "d_mkstemps='" + d_mkstemps + "'" $ WC "d_mktime='" + d_mktime + "'" +$ WC "d_mktime64='undef'" $ WC "d_mmap='" + d_mmap + "'" $ WC "d_modfl='" + d_modfl + "'" $ WC "d_modflproto='" + d_modflproto + "'" @@ -5847,9 +6176,11 @@ $ WC "d_msync='" + d_msync + "'" $ WC "d_munmap='" + d_munmap + "'" $ WC "d_mymalloc='" + d_mymalloc + "'" $ WC "d_nanosleep='" + d_nanosleep + "'" +$ WC "d_ndbm_h_uses_prototypes='undef'" $ WC "d_nice='define'" $ WC "d_nl_langinfo='" + d_nl_langinfo + "'" $ WC "d_nv_preserves_uv='" + d_nv_preserves_uv + "'" +$ WC "nv_overflows_integers_at='" + nv_overflows_integers_at + "'" $ WC "nv_preserves_uv_bits='" + nv_preserves_uv_bits + "'" $ WC "d_nv_zero_is_allbits_zero='define'" $ WC "d_off64_t='" + d_off64_t + "'" @@ -5864,6 +6195,7 @@ $ WC "d_phostname='" + d_phostname + "'" $ WC "d_pipe='define'" $ WC "d_poll='" + d_poll + "'" $ WC "d_procselfexe='undef'" +$ WC "d_pseudofork='undef'" $ WC "d_pthread_atfork='undef'" $ WC "d_pthread_attr_setscope='" + d_pthread_attr_setscope + "'" $ WC "d_pthread_yield='" + d_pthread_yield + "'" @@ -5929,9 +6261,11 @@ $ WC "d_sfio='undef'" $ WC "d_shm='undef'" $ WC "d_shmatprototype='undef'" $ WC "d_sigaction='" + d_sigaction + "'" +$ WC "d_signbit='" + d_signbit + "'" $ WC "d_sigprocmask='" + d_sigprocmask + "'" $ WC "d_sigsetjmp='" + d_sigsetjmp + "'" $ 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 + "'" @@ -5948,6 +6282,7 @@ $ WC "d_statblks='undef'" $ 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 + "'" @@ -5985,6 +6320,7 @@ $ WC "d_tcsetpgrp='undef'" $ WC "d_telldir='define'" $ WC "d_telldirproto='define'" $ WC "d_time='define'" +$ WC "d_timegm='undef'" $ WC "d_times='define'" $ IF ("''F$EXTRACT(1,3, F$GETSYI(""VERSION""))'".GES."7.0") $ THEN @@ -6013,6 +6349,7 @@ $ WC "d_vendorlib='undef'" $ 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'" @@ -6036,10 +6373,11 @@ $ WC "dlobj='" + dlobj + "'" $ WC "dlsrc='dl_vms.c'" $ WC "doublesize='" + doublesize + "'" $ 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=' '" @@ -6048,11 +6386,9 @@ $ WC "embedmymalloc='" + usemymalloc + "'" $ 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'" @@ -6077,6 +6413,7 @@ $ WC "i64type='" + i64type + "'" $ WC "i8size='" + i8size + "'" $ WC "i8type='" + i8type + "'" $ WC "i_arpainet='undef'" +$ WC "i_assert='define'" $ WC "i_crypt='undef'" $ WC "i_db='undef'" $ WC "i_dbm='undef'" @@ -6086,6 +6423,9 @@ $ WC "i_fcntl='" + i_fcntl + "'" $ WC "i_float='define'" $ WC "i_fp='undef'" $ WC "i_fp_class='undef'" +$ WC "i_gdbm='undef'" +$ WC "i_gdbm_ndbm='undef'" +$ WC "i_gdbmndbm='undef'" $ WC "i_grp='" + i_grp + "'" $ WC "i_ieeefp='undef'" $ WC "i_inttypes='" + i_inttypes + "'" @@ -6095,6 +6435,7 @@ $ WC "i_limits='define'" $ WC "i_locale='" + i_locale + "'" $ WC "i_machcthr='undef'" $ WC "i_machcthreads='undef'" +$ WC "i_mallocmalloc='undef'" $ WC "i_math='define'" $ WC "i_memory='undef'" $ WC "i_mntent='undef'" @@ -6127,6 +6468,7 @@ $ WC "i_sysmode='" + i_sysmode + "'" $ WC "i_sysmount='undef'" $ WC "i_sysndir='undef'" $ WC "i_sysparam='undef'" +$ WC "i_syspoll='" + i_syspoll + "'" $ WC "i_sysresrc='undef'" $ WC "i_syssecrt='" + i_syssecrt + "'" $ WC "i_sysselct='undef'" @@ -6215,7 +6557,7 @@ $ WC "netdb_hlen_type='" + netdb_hlen_type + "'" $ 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 "nvfformat='" + nvfformat + "'" $ WC "nvgformat='" + nvgformat + "'" @@ -6238,6 +6580,7 @@ $ WC "perl_root='" + perl_root + "'" ! VMS specific $trnlnm() $ 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 + "'" @@ -6257,6 +6600,10 @@ $ WC "randseedtype='" + randseedtype + "'" $ WC "ranlib='" + "'" $ WC "rd_nodata=' '" $ WC "revision='" + revision + "'" +$ WC "sGMTIME_max='4294967295'" +$ WC "sGMTIME_min='0'" +$ WC "sLOCALTIME_max='4294967295'" +$ WC "sLOCALTIME_min='0'" $ WC "sPRId64='" + sPRId64 + "'" $ WC "sPRIEldbl='" + sPRIEUldbl + "'" $ WC "sPRIFldbl='" + sPRIFUldbl + "'" @@ -6277,9 +6624,9 @@ $ WC "seedfunc='" + seedfunc + "'" $ WC "selectminbits='32'" $ WC "selecttype='" + selecttype + "'" $ WC "sh='MCR'" +$ WC "sharpbang='#!'" $ WC "shmattype='" + " '" $ WC "shortsize='" + shortsize + "'" -$ WC "shrplib='define'" $ IF (f$length(sig_name) .GE. 244) $ THEN $ tmp = "sig_name='" + sig_name + "'" @@ -6326,6 +6673,7 @@ $ WC "stdio_cnt='((*fp)->_cnt)'" $ WC "stdio_ptr='((*fp)->_ptr)'" $ WC "stdio_stream_array=' " + "'" $ WC "subversion='" + subversion + "'" +$ WC "targetarch='" + "'" $ WC "timetype='" + timetype + "'" $ WC "u16size='" + u16size + "'" $ WC "u16type='" + u16type + "'" @@ -6347,7 +6695,9 @@ $ WC "usecasesensitive='" + be_case_sensitive + "'" ! VMS-specific $ WC "usedebugging_perl='"+use_debugging_perl+"'" $ WC "usedefaulttypes='" + usedefaulttypes + "'" ! VMS-specific $ WC "usecrosscompile='undef'" +$ WC "usedevel='" + usedevel + "'" $ WC "usedl='" + usedl + "'" +$ WC "usedtrace='undef'" $ WC "usefaststdio='" + usefaststdio + "'" $ WC "useieee='" + useieee + "'" ! VMS-specific $ WC "useithreads='" + useithreads + "'" @@ -6362,6 +6712,8 @@ $ 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 "usethreads='" + usethreads + "'" @@ -6376,6 +6728,7 @@ $ WC "uvuformat='" + uvuformat + "'" $ WC "uvxformat='" + uvxformat + "'" $ WC "uvXUformat='" + uvXUformat + "'" $ WC "vendorarch='" + "'" +$ WC "vaproto='define'" $ WC "vendorarchexp='" + "'" $ WC "vendorbin='" + "'" $ WC "vendorbinexp='" + "'" @@ -6438,6 +6791,7 @@ $ WC "d_getservent_r='undef'" $ WC "d_getspnam_r='undef'" $ WC "d_gmtime_r='undef'" ! leave undef'd; we use my_gmtime $ WC "d_localtime_r='undef'" ! leave undef'd; we use my_localtime +$ WC "d_localtime_r_needs_tzset='undef'" $ WC "d_random_r='undef'" $ WC "d_readdir_r='define'" ! always defined; we roll our own $ WC "d_readdir64_r='undef'" @@ -6508,7 +6862,7 @@ $! $! 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 @@ -6594,6 +6948,8 @@ $ ENDIF $ 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" @@ -6607,6 +6963,7 @@ $ ENDIF $ 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..." @@ -6679,87 +7036,34 @@ $ ENDIF $ ELSE $ LARGEFILE_REPLACE = "LARGEFILE=" $ 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'" +$ mcr []munchconfig 'config_sh' 'Makefile_SH' -f extra_subs.txt $! Clean up after ourselves $ DELETE/NOLOG/NOCONFIRM []munchconfig.exe; -$! -$ echo4 "Extracting make_ext.com (without variable substitutions)" -$ Create Sys$Disk:[-]make_ext.com -$ Deck/Dollar="$EndOfTpl$" -$!++ 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") -$! 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 = "$" + F$Search(F$Parse(p1,".Exe")) -$! p2 - how to invoke local make utility (passed in from descrip.mms) -$ makeutil = p2 -$ if f$type('p2') .nes. "" then makeutil = 'p2' -$! p3 - make target (passed in from descrip.mms) -$ targ = F$Edit(p3,"Lowercase") -$ sts = 1 -$ extensions = "" -$ open/read CONFIG config.sh -$ find_ext_loop: -$ read/end=end_ext_loop CONFIG line -$ if (f$extract(0,12,line) .NES. "extensions='") -$ then goto find_ext_loop -$ else extensions = f$extract(12,f$length(line),line) - "'" -$ endif -$ end_ext_loop: -$ close CONFIG -$ extensions = f$edit(extensions,"TRIM,COMPRESS") -$ i = 0 -$ next_ext: -$ ext = f$element(i," ",extensions) -$ If ext .eqs. " " .or. ext .eqs. "" Then Goto done -$ Define/User_mode Perl_Env_Tables CLISYM_LOCAL -$ miniperl -$ deck - ($extdir = $ENV{'ext'}) =~ s/::/./g; - $extdir =~ s#/#.#g; - if ($extdir =~ /^vms/i) { $extdir =~ s/vms/.vms.ext/i; } - else { $extdir = ".ext.$extdir"; } - ($ENV{'extdir'} = "[$extdir]"); - ($ENV{'up'} = ('-') x ($extdir =~ tr/././)); -$ eod -$ Set Default &extdir -$ redesc = 0 -$ If F$Locate("clean",targ) .eqs. F$Length(targ) -$ Then -$ Write Sys$Output "" -$ Write Sys$Output " Making ''ext' (dynamic)" -$ On Error Then Goto done -$ If F$Search("Descrip.MMS") .eqs. "" -$ Then -$ redesc = 1 -$ Else -$ If F$CvTime(F$File("Descrip.MMS","rdt")) .lts. - - F$CvTime(F$File("Makefile.PL","rdt")) Then redesc = 1 -$ EndIf -$ Else -$ Write Sys$Output "''targ'ing ''ext' . . ." -$ On Error Then Continue -$ EndIf -$ If redesc Then - - 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 -$ Goto next_ext -$ done: -$ sts = $Status -$ Set Def &def -$ Exit sts -$!-- make_ext.com -$EndOfTpl$ +$ DELETE/NOLOG/NOCONFIRM []extra_subs.txt; $! $! Note that the /key qualifier to search, as in: $! search README.* "=head"/key=(position=1)/window=0/output=extra.pods @@ -6977,11 +7281,17 @@ $ 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 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""" -$ IF F$LOCATE("Devel::DProf",extensions) .LT. F$LENGTH(extensions) +$ 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",dynamic_ext) .LT. F$LENGTH(dynamic_ext) $ THEN $ WRITE CONFIG "$ dprofpp == """ + perl_setup_perl + " ''vms_prefix':[utils]dprofpp.com""" $ ENDIF @@ -7007,6 +7317,10 @@ $ WRITE CONFIG "$ prove == """ + perl_setup_perl + " ''vms_prefix':[utils]p $ 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 "$ 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""" $ CLOSE CONFIG @@ -7088,6 +7402,11 @@ $ ENDIF $ 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