home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / hints / solaris_2.sh < prev    next >
Text File  |  2000-03-22  |  22KB  |  680 lines

  1. # hints/solaris_2.sh
  2. # Last modified:  Tue Apr 13 13:12:49 EDT 1999
  3. # Andy Dougherty  <doughera@lafayette.edu>
  4. # Based on input from lots of folks, especially
  5. # Dean Roehrich <roehrich@ironwood-fddi.cray.com>
  6.  
  7. # If perl fails tests that involve dynamic loading of extensions, and
  8. # you are using gcc, be sure that you are NOT using GNU as and ld.  One
  9. # way to do that is to invoke Configure with
  10. #     sh Configure -Dcc='gcc -B/usr/ccs/bin/'
  11. #
  12. #  (Note that the trailing slash is *required*.)
  13. #  gcc will occasionally emit warnings about "unused prefix", but
  14. #  these ought to be harmless.  See below for more details.
  15.  
  16. # See man vfork.
  17. usevfork=false
  18.  
  19. d_suidsafe=define
  20.  
  21. # Avoid all libraries in /usr/ucblib.
  22. set `echo $glibpth | sed -e 's@/usr/ucblib@@'`
  23. glibpth="$*"
  24.  
  25. # Remove bad libraries.  -lucb contains incompatible routines.
  26. # -lld doesn't do anything useful.
  27. # -lmalloc can cause a problem with GNU CC & Solaris.  Specifically,
  28. # libmalloc.a may allocate memory that is only 4 byte aligned, but
  29. # GNU CC on the Sparc assumes that doubles are 8 byte aligned.
  30. # Thanks to  Hallvard B. Furuseth <h.b.furuseth@usit.uio.no>
  31. set `echo " $libswanted " | sed -e 's@ ld @ @' -e 's@ malloc @ @' -e 's@ ucb @ @'`
  32. libswanted="$*"
  33.  
  34. # Look for architecture name.  We want to suggest a useful default.
  35. case "$archname" in
  36. '')
  37.     if test -f /usr/bin/arch; then
  38.         archname=`/usr/bin/arch`
  39.         archname="${archname}-${osname}"
  40.     elif test -f /usr/ucb/arch; then
  41.         archname=`/usr/ucb/arch`
  42.         archname="${archname}-${osname}"
  43.     fi
  44.     ;;
  45. esac
  46.  
  47. test -z "`${cc:-cc} -V 2>&1|grep -i workshop`" || ccisworkshop="$define"
  48. test -z "`${cc:-cc} -v 2>&1|grep -i gcc`"      || ccisgcc="$define"
  49.  
  50. cat >UU/workshoplibpth.cbu<<'EOCBU'
  51. case "$workshoplibpth_done" in
  52. '')    case "$use64bitall" in
  53.     "$define"|true|[yY]*)
  54.             loclibpth="$loclibpth /usr/lib/sparcv9"
  55.             if test -n "$workshoplibs"; then
  56.                 loclibpth=`echo $loclibpth | sed -e "s% $workshoplibs%%" `
  57.                 for lib in $workshoplibs; do
  58.                     # Logically, it should be sparcv9.
  59.                     # But the reality fights back, it's v9.
  60.                     loclibpth="$loclibpth $lib/sparcv9 $lib/v9"
  61.                 done
  62.             fi 
  63.         ;;
  64.     *)  loclibpth="$loclibpth $workshoplibs"  
  65.         ;;
  66.     esac
  67.     workshoplibpth_done="$define"
  68.     ;;
  69. esac
  70. EOCBU
  71.  
  72. case "$ccisworkshop" in
  73. "$define")
  74.     cat >try.c <<EOF
  75. #include <sunmath.h>
  76. int main() { return(0); }
  77. EOF
  78.     workshoplibs=`cc -### try.c -lsunmath -o try 2>&1|grep " -Y "|sed 's%.* -Y "P,\(.*\)".*%\1%'|tr ':' '\n'|grep '/SUNWspro/'`
  79.     . ./UU/workshoplibpth.cbu
  80.     ;;
  81. esac
  82.  
  83. ######################################################
  84. # General sanity testing.  See below for excerpts from the Solaris FAQ.
  85. #
  86. # From roehrich@ironwood-fddi.cray.com Wed Sep 27 12:51:46 1995
  87. # Date: Thu, 7 Sep 1995 16:31:40 -0500
  88. # From: Dean Roehrich <roehrich@ironwood-fddi.cray.com>
  89. # To: perl5-porters@africa.nicoh.com
  90. # Subject: Re: On perl5/solaris/gcc
  91. #
  92. # Here's another draft of the perl5/solaris/gcc sanity-checker. 
  93.  
  94. case `type ${cc:-cc}` in
  95. */usr/ucb/cc*) cat <<END >&4
  96.  
  97. NOTE:  Some people have reported problems with /usr/ucb/cc.  
  98. If you have difficulties, please make sure the directory
  99. containing your C compiler is before /usr/ucb in your PATH.
  100.  
  101. END
  102. ;;
  103. esac
  104.  
  105.  
  106. # Check that /dev/fd is mounted.  If it is not mounted, let the
  107. # user know that suid scripts may not work.
  108. /usr/bin/df /dev/fd 2>&1 > /dev/null
  109. case $? in
  110. 0) ;;
  111. *)
  112.     cat <<END >&4
  113.  
  114. NOTE: Your system does not have /dev/fd mounted.  If you want to
  115. be able to use set-uid scripts you must ask your system administrator
  116. to mount /dev/fd.
  117.  
  118. END
  119.     ;;
  120. esac
  121.  
  122.  
  123. # See if libucb can be found in /usr/lib.  If it is, warn the user
  124. # that this may cause problems while building Perl extensions.
  125. /usr/bin/ls /usr/lib/libucb* >/dev/null 2>&1
  126. case $? in
  127. 0)
  128.     cat <<END >&4
  129.  
  130. NOTE: libucb has been found in /usr/lib.  libucb should reside in
  131. /usr/ucblib.  You may have trouble while building Perl extensions.
  132.  
  133. END
  134. ;;
  135. esac
  136.  
  137. # Use shell built-in 'type' command instead of /usr/bin/which to
  138. # avoid possible csh start-up problems and also to use the same shell
  139. # we'll be using to Configure and make perl.
  140. # The path name is the last field in the output, but the type command
  141. # has an annoying array of possible outputs, e.g.:
  142. #    make is hashed (/opt/gnu/bin/make)
  143. #     cc is /usr/ucb/cc
  144. #    foo not found
  145. # use a command like type make | awk '{print $NF}' | sed 's/[()]//g'
  146.  
  147. # See if make(1) is GNU make(1).
  148. # If it is, make sure the setgid bit is not set.
  149. make -v > make.vers 2>&1
  150. if grep GNU make.vers > /dev/null 2>&1; then
  151.     tmp=`type make | awk '{print $NF}' | sed 's/[()]//g'`
  152.     case "`/usr/bin/ls -lL $tmp`" in
  153.     ??????s*)
  154.         cat <<END >&2
  155.     
  156. NOTE: Your PATH points to GNU make, and your GNU make has the set-group-id
  157. bit set.  You must either rearrange your PATH to put /usr/ccs/bin before the
  158. GNU utilities or you must ask your system administrator to disable the
  159. set-group-id bit on GNU make.
  160.  
  161. END
  162.         ;;
  163.     esac
  164. fi
  165. rm -f make.vers
  166.  
  167. # XXX EXPERIMENTAL  A.D.  2/27/1998
  168. # XXX This script UU/cc.cbu will get 'called-back' by Configure after it
  169. # XXX has prompted the user for the C compiler to use.
  170. cat > UU/cc.cbu <<'EOSH'
  171. # If the C compiler is gcc:
  172. #   - check the fixed-includes
  173. #   - check as(1) and ld(1), they should not be GNU
  174. #    (GNU as and ld 2.8.1 and later are reportedly ok, however.)
  175. # If the C compiler is not gcc:
  176. #   - check as(1) and ld(1), they should not be GNU
  177. #    (GNU as and ld 2.8.1 and later are reportedly ok, however.)
  178. #
  179. # Watch out in case they have not set $cc.
  180.  
  181. # Perl compiled with some combinations of GNU as and ld may not 
  182. # be able to perform dynamic loading of extensions.  If you have a
  183. # problem with dynamic loading, be sure that you are using the Solaris
  184. # /usr/ccs/bin/as and /usr/ccs/bin/ld.  You can do that with
  185. #          sh Configure -Dcc='gcc -B/usr/ccs/bin/'
  186. # (note the trailing slash is required). 
  187. # Combinations that are known to work with the following hints:
  188. #
  189. #  gcc-2.7.2, GNU as 2.7, GNU ld 2.7
  190. #  egcs-1.0.3, GNU as 2.9.1 and GNU ld 2.9.1
  191. #    --Andy Dougherty  <doughera@lafayette.edu>  
  192. #    Tue Apr 13 17:19:43 EDT 1999
  193.  
  194. # Get gcc to share its secrets.
  195. echo 'main() { return 0; }' > try.c
  196.     # Indent to avoid propagation to config.sh
  197.     verbose=`${cc:-cc} -v -o try try.c 2>&1`
  198.  
  199. if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then
  200.     #
  201.     # Using gcc.
  202.     #
  203.  
  204.     tmp=`echo "$verbose" | grep '^Reading' |
  205.         awk '{print $NF}'  | sed 's/specs$/include/'`
  206.  
  207.     # Determine if the fixed-includes look like they'll work.
  208.     # Doesn't work anymore for gcc-2.7.2.
  209.  
  210.     # See if as(1) is GNU as(1).  GNU as(1) might not work for this job.
  211.     if echo "$verbose" | grep ' /usr/ccs/bin/as ' >/dev/null 2>&1; then
  212.         :
  213.     else
  214.         cat <<END >&2
  215.  
  216. NOTE: You are using GNU as(1).  GNU as(1) might not build Perl.  If you
  217. have trouble, you can use /usr/ccs/bin/as by including -B/usr/ccs/bin/
  218. in your ${cc:-cc} command.  (Note that the trailing "/" is required.)
  219.  
  220. END
  221.         # Apparently not needed, at least for as 2.7 and later.
  222.         # cc="${cc:-cc} -B/usr/ccs/bin/"
  223.     fi
  224.  
  225.     # See if ld(1) is GNU ld(1).  GNU ld(1) might not work for this job.
  226.     # Recompute $verbose since we may have just changed $cc.
  227.     verbose=`${cc:-cc} -v -o try try.c 2>&1 | grep ld 2>&1`
  228.  
  229.     if echo "$verbose" | grep ' /usr/ccs/bin/ld ' >/dev/null 2>&1; then
  230.         # Ok, gcc directly calls the Solaris /usr/ccs/bin/ld.
  231.         :
  232.     elif echo "$verbose" | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then
  233.         # Hmm.  gcc doesn't call /usr/ccs/bin/ld directly, but it
  234.         # does appear to be using it eventually.  egcs-1.0.3's ld
  235.         # wrapper does this.
  236.         # All Solaris versions of ld I've seen contain the magic
  237.         # string used in the grep.
  238.         :
  239.     else
  240.         # No evidence yet of /usr/ccs/bin/ld.  Some versions
  241.         # of egcs's ld wrapper call /usr/ccs/bin/ld in turn but
  242.         # apparently don't reveal that unless you pass in -V.
  243.         # (This may all depend on local configurations too.)
  244.  
  245.         myld=`echo $verbose| grep ld | awk '/\/ld/ {print $1}'`
  246.         # This assumes that gcc's output will not change, and that
  247.         # /full/path/to/ld will be the first word of the output.
  248.         # Thus myld is something like opt/gnu/sparc-sun-solaris2.5/bin/ld
  249.  
  250.         if $myld -V 2>&1 | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then
  251.         # Ok, /usr/ccs/bin/ld eventually does get called.
  252.         :
  253.         else
  254.         cat <<END >&2
  255.  
  256. NOTE: You are using GNU ld(1).  GNU ld(1) might not build Perl.  If you
  257. have trouble, you can use /usr/ccs/bin/ld by including -B/usr/ccs/bin/
  258. in your ${cc:-cc} command.  (Note that the trailing "/" is required.)
  259.  
  260. I will try to use GNU ld by passing in the -Wl,-E flag, but if that
  261. doesn't work, you should use -B/usr/ccs/bin/ instead.
  262.  
  263. END
  264.         ccdlflags="$ccdlflags -Wl,-E"
  265.         lddlflags="$lddlflags -W,l-E -G"
  266.         fi
  267.     fi
  268.  
  269. else
  270.     #
  271.     # Not using gcc.
  272.     #
  273.  
  274.     # See if as(1) is GNU as(1).  GNU might not work for this job.
  275.     case `as --version < /dev/null 2>&1` in
  276.     *GNU*)
  277.         cat <<END >&2
  278.  
  279. NOTE: You are using GNU as(1).  GNU as(1) might not build Perl.
  280. You must arrange to use /usr/ccs/bin/as, perhaps by adding /usr/ccs/bin
  281. to the beginning of your PATH.
  282.  
  283. END
  284.         ;;
  285.     esac
  286.  
  287.     # See if ld(1) is GNU ld(1).  GNU ld(1) might not work for this job.
  288.     # ld --version doesn't properly report itself as a GNU tool,
  289.     # as of ld version 2.6, so we need to be more strict. TWP 9/5/96
  290.     gnu_ld=false
  291.     case `ld --version < /dev/null 2>&1` in
  292.     *GNU*|ld\ version\ 2*)
  293.         gnu_ld=true ;;
  294.     *) ;;
  295.     esac
  296.     if $gnu_ld ; then :
  297.     else
  298.         # Try to guess from path
  299.         case `type ld | awk '{print $NF}'` in
  300.         *gnu*|*GNU*|*FSF*)
  301.             gnu_ld=true ;;
  302.         esac
  303.     fi
  304.     if $gnu_ld ; then
  305.         cat <<END >&2
  306.  
  307. NOTE: You are apparently using GNU ld(1).  GNU ld(1) might not build Perl.
  308. You should arrange to use /usr/ccs/bin/ld, perhaps by adding /usr/ccs/bin
  309. to the beginning of your PATH.
  310.  
  311. END
  312.     fi
  313.  
  314. fi
  315.  
  316. # as --version or ld --version might dump core.
  317. rm -f try try.c
  318. rm -f core
  319.  
  320. # XXX
  321. EOSH
  322.  
  323. cat > UU/usethreads.cbu <<'EOCBU'
  324. # This script UU/usethreads.cbu will get 'called-back' by Configure 
  325. # after it has prompted the user for whether to use threads.
  326. case "$usethreads" in
  327. $define|true|[yY]*)
  328.         ccflags="-D_REENTRANT $ccflags"
  329.  
  330.         # sched_yield is in -lposix4
  331.         set `echo X "$libswanted "| sed -e 's/ c / posix4 pthread c /'`
  332.         shift
  333.         libswanted="$*"
  334.  
  335.         # On Solaris 2.6 x86 there is a bug with sigsetjmp() and siglongjmp()
  336.         # when linked with the threads library, such that whatever positive
  337.         # value you pass to siglongjmp(), sigsetjmp() returns 1.
  338.         # Thanks to Simon Parsons <S.Parsons@ftel.co.uk> for this report.
  339.         # Sun BugID is 4117946, "sigsetjmp always returns 1 when called by
  340.         # siglongjmp in a MT program". As of 19980622, there is no patch
  341.         # available.
  342.         cat >try.c <<'EOM'
  343.     /* Test for sig(set|long)jmp bug. */
  344.     #include <setjmp.h>
  345.      
  346.     main()
  347.     {
  348.         sigjmp_buf env;
  349.         int ret;
  350.     
  351.         ret = sigsetjmp(env, 1);
  352.         if (ret) { return ret == 2; }
  353.         siglongjmp(env, 2);
  354.     }
  355. EOM
  356.         if test "`arch`" = i86pc -a "$osvers" = 2.6 && \
  357.            ${cc:-cc} try.c -lpthread >/dev/null 2>&1 && ./a.out; then
  358.          d_sigsetjmp=$undef
  359.         cat << 'EOM' >&2
  360.  
  361. You will see a *** WHOA THERE!!! ***  message from Configure for
  362. d_sigsetjmp.  Keep the recommended value.  See hints/solaris_2.sh
  363. for more information.
  364.  
  365. EOM
  366.         fi
  367.     ;;
  368. esac
  369. EOCBU
  370.  
  371. cat > UU/uselargefiles.cbu <<'EOCBU'
  372. # This script UU/uselargefiles.cbu will get 'called-back' by Configure 
  373. # after it has prompted the user for whether to use large files.
  374. case "$uselargefiles" in
  375. ''|$define|true|[yY]*)
  376.     ccflags="$ccflags `getconf LFS_CFLAGS 2>/dev/null`"
  377.     ldflags="$ldflags `getconf LFS_LDFLAGS 2>/dev/null`"
  378.     libswanted="$libswanted `getconf LFS_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`"
  379.     ;;
  380. esac
  381. EOCBU
  382.  
  383. cat > UU/use64bitint.cbu <<'EOCBU'
  384. # This script UU/use64bitint.cbu will get 'called-back' by Configure 
  385. # after it has prompted the user for whether to use 64 bit integers.
  386. case "$use64bitint" in
  387. "$define"|true|[yY]*)
  388.         case "`uname -r`" in
  389.         2.[1-6])
  390.         cat >&4 <<EOM
  391. Solaris `uname -r` does not support 64-bit integers.
  392. You should upgrade to at least Solaris 2.7.
  393. EOM
  394.         exit 1
  395.         ;;
  396.         esac
  397.         ;;
  398. esac
  399. EOCBU
  400.  
  401. cat > UU/use64bitall.cbu <<'EOCBU'
  402. # This script UU/use64bitall.cbu will get 'called-back' by Configure 
  403. # after it has prompted the user for whether to be maximally 64 bitty.
  404. case "$use64bitall-$use64bitall_done" in
  405. "$define-"|true-|[yY]*-)
  406.         libc='/usr/lib/sparcv9/libc.so'
  407.         if test ! -f $libc; then
  408.         cat >&4 <<EOM
  409.  
  410. I do not see the 64-bit libc, $libc.
  411. Cannot continue, aborting.
  412.  
  413. EOM
  414.         exit 1
  415.         fi 
  416.         . ./UU/workshoplibpth.cbu
  417.         case "$cc -v 2>/dev/null" in
  418.         *gcc*)
  419.         echo 'main() { return 0; }' > try.c
  420.         if ${cc:-cc} -mcpu=v9 -m64 -S try.c 2>&1 | grep -e \
  421.             '-m64 is not supported by this configuration'; then
  422.             cat >&4 <<EOM
  423.  
  424. Full 64-bit build not supported by this configuration.
  425. Cannot continue, aborting.
  426.  
  427. EOM
  428.             exit 1
  429.         fi
  430.         ccflags="$ccflags -mcpu=v9 -m64"
  431.         if test X`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null` != X; then
  432.             ccflags="$ccflags -Wa,`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`"
  433.         fi
  434.         # no changes to ld flags, as (according to man ld):
  435.         #
  436.            # There is no specific option that tells ld to link 64-bit
  437.         # objects; the class of the first object that gets processed
  438.         # by ld determines whether it is to perform a 32-bit or a
  439.         # 64-bit link edit.
  440.         ;;
  441.         *)
  442.         ccflags="$ccflags `getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`"
  443.         ldflags="$ldflags `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`"
  444.         lddlflags="$lddlflags -G `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`"
  445.         ;;
  446.         esac    
  447.         libscheck='case "`/usr/bin/file $xxx`" in
  448. *64-bit*|*SPARCV9*) ;;
  449. *) xxx=/no/64-bit$xxx ;;
  450. esac'
  451.         use64bitall_done=yes
  452.         ;;
  453. esac
  454. EOCBU
  455.  
  456. # Actually, we want to run this already now, if so requested,
  457. # because we need to fix up things right now.
  458. case "$use64bitall" in
  459. "$define"|true|[yY]*)
  460.     . ./UU/use64bitall.cbu
  461.     ;;
  462. esac
  463.  
  464. cat > UU/uselongdouble.cbu <<'EOCBU'
  465. # This script UU/uselongdouble.cbu will get 'called-back' by Configure 
  466. # after it has prompted the user for whether to use long doubles.
  467. case "$uselongdouble-$uselongdouble_done" in
  468. "$define-"|true-|[yY]*-)
  469.     case "$ccisworkshop" in
  470.     '')    cat >&4 <<EOM
  471.  
  472. I do not see the Sun Workshop compiler; therefore I do not see
  473. the libsunmath; therefore I do not know how to do long doubles, sorry.
  474. I'm disabling the use of long doubles.
  475. EOM
  476.         uselongdouble="$undef"
  477.         ;;
  478.     *)    libswanted="$libswanted sunmath"
  479.         loclibpth="$loclibpth /opt/SUNWspro/lib"
  480.         ;;
  481.     esac
  482.     uselongdouble_done=yes
  483.     ;;
  484. esac
  485. EOCBU
  486.  
  487. # Actually, we want to run this already now, if so requested,
  488. # because we need to fix up things right now.
  489. case "$uselongdouble" in
  490. "$define"|true|[yY]*)
  491.     . ./UU/uselongdouble.cbu
  492.     ;;
  493. esac
  494.  
  495. rm -f try.c try.o try
  496. # keep that leading tab
  497.     ccisworkshop=''
  498.     ccisgcc=''
  499.  
  500. # This is just a trick to include some useful notes.
  501. cat > /dev/null <<'End_of_Solaris_Notes'
  502.  
  503. Here are some notes kindly contributed by Dean Roehrich.
  504.  
  505. -----
  506. Generic notes about building Perl5 on Solaris:
  507. - Use /usr/ccs/bin/make.
  508. - If you use GNU make, remove its setgid bit.
  509. - Remove all instances of *ucb* from your path.
  510. - Make sure libucb is not in /usr/lib (it should be in /usr/ucblib).
  511. - Do not use GNU as or GNU ld, or any of GNU binutils or GNU libc.
  512. - Do not use /usr/ucb/cc.
  513. - Do not change Configure's default answers, except for the path names.
  514. - Do not use -lmalloc.
  515. - Do not build on SunOS 4 and expect it to work properly on SunOS 5.
  516. - /dev/fd must be mounted if you want set-uid scripts to work.
  517.  
  518.  
  519. Here are the gcc-related questions and answers from the Solaris 2 FAQ.  Note
  520. the themes:
  521.     - run fixincludes
  522.     - run fixincludes correctly
  523.     - don't use GNU as or GNU ld
  524.  
  525. Question 5.7 covers the __builtin_va_alist problem people are always seeing.
  526. Question 6.1.3 covers the GNU as and GNU ld issues which are always biting
  527. people.
  528. Question 6.9 is for those who are still trying to compile Perl4.
  529.  
  530. The latest Solaris 2 FAQ can be found in the following locations:
  531.     rtfm.mit.edu:/pub/usenet-by-group/comp.sys.sun.admin
  532.     ftp.fwi.uva.nl:/pub/solaris
  533.  
  534. Perl5 comes with a script in the top-level directory called "myconfig" which
  535. will print a summary of the configuration in your config.sh.  My summary for
  536. Solaris 2.4 and gcc 2.6.3 follows.  I have also built with gcc 2.7.0 and the
  537. results are identical.  This configuration was generated with Configure's -d
  538. option (take all defaults, don't bother prompting me).  All tests pass for
  539. Perl5.001, patch.1m.
  540.  
  541. Summary of my perl5 (patchlevel 1) configuration:
  542.   Platform:
  543.     osname=solaris, osver=2.4, archname=sun4-solaris
  544.     uname='sunos poplar 5.4 generic_101945-27 sun4d sparc '
  545.     hint=recommended
  546.   Compiler:
  547.     cc='gcc', optimize='-O', ld='gcc'
  548.     cppflags=''
  549.     ccflags =''
  550.     ldflags =''
  551.     stdchar='unsigned char', d_stdstdio=define, usevfork=false
  552.     voidflags=15, castflags=0, d_casti32=define, d_castneg=define
  553.     intsize=4, alignbytes=8, usemymalloc=y, randbits=15
  554.   Libraries:
  555.     so=so
  556.     libpth=/lib /usr/lib /usr/ccs/lib /usr/local/lib
  557.     libs=-lsocket -lnsl -ldl -lm -lc -lcrypt
  558.     libc=/usr/lib/libc.so
  559.   Dynamic Linking:
  560.     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef
  561.     cccdlflags='-fpic', ccdlflags=' ', lddlflags='-G'
  562.  
  563.  
  564. Dean
  565. roehrich@cray.com
  566. 9/7/95
  567.  
  568. -----------
  569.  
  570. From: Casper.Dik@Holland.Sun.COM (Casper H.S. Dik - Network Security Engineer)
  571. Subject: Solaris 2 Frequently Asked Questions (FAQ) 1.48
  572. Date: 25 Jul 1995 12:20:18 GMT
  573.  
  574. 5.7) Why do I get __builtin_va_alist or __builtin_va_arg_incr undefined?
  575.  
  576.     You're using gcc without properly installing the gcc fixed
  577.     include files.  Or you ran fixincludes after installing gcc
  578.     w/o moving the gcc supplied varargs.h and stdarg.h files
  579.     out of the way and moving them back again later.  This often
  580.     happens when people install gcc from a binary distribution.
  581.     If there's a tmp directory in gcc's include directory, fixincludes
  582.     didn't complete.  You should have run "just-fixinc" instead.
  583.  
  584.     Another possible cause is using ``gcc -I/usr/include.''
  585.  
  586. 6.1) Where is the C compiler or where can I get one?
  587.  
  588.     [...]
  589.  
  590.     3) Gcc.
  591.  
  592.     Gcc is available from the GNU archives in source and binary
  593.     form.  Look in a directory called sparc-sun-solaris2 for
  594.     binaries.  You need gcc 2.3.3 or later.  You should not use
  595.     GNU as or GNU ld.  Make sure you run just-fixinc if you use
  596.     a binary distribution.  Better is to get a binary version and
  597.     use that to bootstrap gcc from source.
  598.  
  599.     [...]
  600.  
  601.     When you install gcc, don't make the mistake of installing
  602.     GNU binutils or GNU libc, they are not as capable as their
  603.     counterparts you get with Solaris 2.x.
  604.  
  605. 6.9) I can't get perl 4.036 to compile or run.
  606.  
  607.     Run Configure, and use the solaris_2_0 hints, *don't* use
  608.     the solaris_2_1 hints and don't use the config.sh you may
  609.     already have.  First you must make sure Configure and make
  610.     don't find /usr/ucb/cc.  (It must use gcc or the native C
  611.     compiler: /opt/SUNWspro/bin/cc)
  612.  
  613.     Some questions need a special answer.
  614.  
  615.     Are your system (especially dbm) libraries compiled with gcc? [y] y
  616.  
  617.     yes: gcc 2.3.3 or later uses the standard calling
  618.     conventions, same as Sun's C.
  619.  
  620.     Any additional cc flags? [ -traditional -Dvolatile=__volatile__
  621.     -I/usr/ucbinclude] -traditional -Dvolatile=__volatile__
  622.     Remove /usr/ucbinclude.
  623.  
  624.     Any additional libraries? [-lsocket -lnsl -ldbm -lmalloc -lm
  625.     -lucb] -lsocket -lnsl  -lm
  626.  
  627.     Don't include -ldbm, -lmalloc and -lucb.
  628.  
  629.     Perl 5 compiled out of the box.
  630.  
  631. 7.0) 64-bitness, from Alan Burlison (added by jhi 2000-02-21)
  632.  
  633.   You need a machine running Solaris 2.7 or above.
  634.  
  635.   Here's some rules:
  636.   
  637.   1. Solaris 2.7 and above will run in either 32 bit or 64 bit mode,
  638.      via a reboot.
  639.   2. You can build 64 bit apps whilst running 32 bit mode and vice-versa.
  640.   3. 32 bit apps will run under Solaris running in either 32 or 64 bit mode.
  641.   4. 64 bit apps require Solaris to be running 64 bit mode
  642.   5. It is possible to select the appropriate 32 or 64 bit version of an
  643.      app at run-time using isaexec(3).
  644.   6. You can detect the OS mode using "isainfo -v", e.g.
  645.       fubar$ isainfo -v   # Ultra 30 in 64 bit mode
  646.       64-bit sparcv9 applications
  647.       32-bit sparc applications
  648.   7. To compile 64 bit you need to use the flag "-xarch=v9".
  649.      getconf(1) will tell you this, e.g.
  650.       fubar$ getconf -a | grep v9
  651.       XBS5_LP64_OFF64_CFLAGS:         -xarch=v9
  652.       XBS5_LP64_OFF64_LDFLAGS:        -xarch=v9
  653.       XBS5_LP64_OFF64_LINTFLAGS:      -xarch=v9
  654.       XBS5_LPBIG_OFFBIG_CFLAGS:       -xarch=v9
  655.       XBS5_LPBIG_OFFBIG_LDFLAGS:      -xarch=v9
  656.       XBS5_LPBIG_OFFBIG_LINTFLAGS:    -xarch=v9
  657.       _XBS5_LP64_OFF64_CFLAGS:        -xarch=v9
  658.       _XBS5_LP64_OFF64_LDFLAGS:       -xarch=v9
  659.       _XBS5_LP64_OFF64_LINTFLAGS:     -xarch=v9
  660.       _XBS5_LPBIG_OFFBIG_CFLAGS:      -xarch=v9
  661.       _XBS5_LPBIG_OFFBIG_LDFLAGS:     -xarch=v9
  662.       _XBS5_LPBIG_OFFBIG_LINTFLAGS:   -xarch=v9
  663.  
  664.   > > Now, what should we do, then?  Should -Duse64bits in a v9 box cause
  665.   > > Perl to compiled in v9 mode?  Or should we for compatibility stick
  666.   > > with 32 bit builds and let the people in the know to add the -xarch=v9
  667.   > > to ccflags (and ldflags?)?
  668.  
  669.   > I think the second (explicit) mechanism should be the default.  Unless
  670.   > you want to allocate more than ~ 4Gb of memory inside Perl, you don't
  671.   > need Perl to be a 64-bit app.  Put it this way, on a machine running
  672.   > Solaris 8, there are 463 executables under /usr/bin, but only 15 of
  673.   > those require 64 bit versions - mainly because they invade the kernel
  674.   > address space, e.g. adb, kgmon etc.  Certainly we don't recommend users
  675.   > to build 64 bit apps unless they need the address space.
  676.  
  677. End_of_Solaris_Notes
  678.  
  679.