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