X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=configure.com;h=b6c923d825951a3e365c9563ab6f4aec4bf71380;hb=04d1c4156e381ac787d2439f25f8152211f495f8;hp=4c2c2b322f34c8f9e524376277f4066cb04c259f;hpb=36f1aec4fad08d7a2187b748f1bcb7685e19bb3d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/configure.com b/configure.com index 4c2c2b3..b6c923d 100644 --- a/configure.com +++ b/configure.com @@ -49,8 +49,10 @@ $ builder = "MMK" $ use_vmsdebug_perl = "n" $ use64bitall = "n" $ use64bitint = "n" +$ uselongdouble = "n" $ uselargefiles = "n" $ usestdstat = "n" +$ usedecterm = "n" $ usesitecustomize = "n" $ C_Compiler_Replace = "CC=" $ thread_upcalls = "MTU=" @@ -543,8 +545,9 @@ $ 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 @@ -903,9 +906,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|usedecterm" $! $ open/read CONFIG 'config_sh' $ rd_conf_loop: @@ -2082,7 +2085,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 @@ -2351,7 +2354,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 +2371,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 +2478,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 +2491,7 @@ $ IF ans $ THEN $ thread_kernel = "MTK=MTK=1" $ usekernelthreads = "define" +$ ENDIF $ ENDIF $ ENDIF $ ENDIF @@ -2556,6 +2573,45 @@ $ d_unlink_all_versions = "define" $ ELSE $ 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" @@ -2717,7 +2773,14 @@ $ 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" +$ ! 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 @@ -3032,12 +3095,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 +3111,6 @@ $ uvxformat="""Lx""" $ uvXUformat="""LX""" $ ELSE $ use64bitint = "undef" -$ uselongdouble = "undef" -$ usemorebits = "undef" $ ivdformat="""ld""" $ uvuformat="""lu""" $ uvoformat="""lo""" @@ -3055,10 +3119,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""" @@ -3160,11 +3227,6 @@ $ d_quad = "define" $ 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" @@ -3181,13 +3243,28 @@ $ d_quad = "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 @@ -5358,12 +5435,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 @@ -5476,6 +5557,35 @@ $ GOSUB compile $ nv_preserves_uv_bits = tmp $ 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..." $ kill_by_sigprc = "undef" $ OS @@ -5525,7 +5635,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" @@ -5867,6 +5977,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 + "'" @@ -5932,6 +6043,7 @@ $ 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'" @@ -6330,6 +6442,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 + "'" @@ -6610,6 +6723,7 @@ $! Alas this does not help to build Fcntl $! 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 @@ -6684,13 +6798,46 @@ $ ENDIF $ 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'" +$ WC "''DECTERM_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; +$ DELETE/NOLOG/NOCONFIRM []extra_subs.txt; $! $ echo4 "Extracting make_ext.com (without variable substitutions)" $ Create Sys$Disk:[-]make_ext.com @@ -6699,7 +6846,7 @@ $!++ 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) @@ -6757,7 +6904,7 @@ $ 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 +$ Set Def &mydefault $ Goto next_ext $ done: $ sts = $Status