summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Beattie <mbeattie@sable.ox.ac.uk>1997-11-20 12:12:00 +0000
committerMalcolm Beattie <mbeattie@sable.ox.ac.uk>1997-11-20 12:12:00 +0000
commiteb1cfdd6b0a7e7a6918084a3828c98f88804c32d (patch)
tree6e94caef6b8490b0b0d6364260cbdfb1d3e53ed7
parentc5254dd600e35509100e643867b417e514781043 (diff)
downloadperl-eb1cfdd6b0a7e7a6918084a3828c98f88804c32d.tar.gz
Initial stab at IRIX configuration support for threading. Manually
applied parts of following patches: Subject: Perl 5.004_54 on IRIX Date: Wed, 19 Nov 1997 18:37:14 +0200 (EET) From: Jarkko Hietaniemi <jhi@iki.fi> Subject: Re: Perl 5.004_54 on IRIX Date: 19 Nov 1997 17:10:17 -0800 From: Scott Henry <scotth@sgi.com> p4raw-id: //depot/perl@271
-rw-r--r--README.threads14
-rw-r--r--hints/irix_6.sh49
-rw-r--r--hints/irix_6_0.sh8
-rw-r--r--hints/irix_6_1.sh7
-rw-r--r--perl.h4
5 files changed, 80 insertions, 2 deletions
diff --git a/README.threads b/README.threads
index 69bddca5a8..653321af8a 100644
--- a/README.threads
+++ b/README.threads
@@ -4,6 +4,7 @@ If you want to build with multi-threading support and you are
running Linux 2.x (with the LinuxThreads library installed:
that's the linuxthreads and linuxthreads-devel RPMs for RedHat)
or Digital UNIX 4.x or Solaris 2.x for recentish x (2.5 is OK)
+or IRIX 6.2 or newer (6.2 will require a few os patches),
then you should be able to use
./Configure -Dusethreads -Doptimize=-g -ders
make
@@ -42,6 +43,19 @@ For Digital Unix 4.x:
Zap mallocobj and mallocsrc (foo='')
Change d_mymalloc to undef
For Solaris, do the same as for Linux above.
+For IRIX:
+ Add -DUSE_THREADS -DDEBUGGING to ccflags
+ Add -DUSE_THREADS -DDEBUGGING to cppflags
+ Add -lpthread to libs
+ Change optimize to -g
+ For IRIX 6.2, you have to have the following patches installed:
+ 1404 Irix 6.2 Posix 1003.1b man pages
+ 1645 IRIX 6.2 & 6.3 POSIX header file updates
+ 2000 Irix 6.2 Posix 1003.1b support modules
+ 2254 Pthread library fixes
+ For IRIX 6.3 and 6.4 the pthreads should work out of the box.
+ Thanks to Hannu Napari <Hannu.Napari@hut.fi> for the IRIX
+ pthreads patches information.
Now you can do a
make
diff --git a/hints/irix_6.sh b/hints/irix_6.sh
index 795b6ab640..1ae1ca5249 100644
--- a/hints/irix_6.sh
+++ b/hints/irix_6.sh
@@ -20,6 +20,9 @@
# Tweaked by Chip Salzenberg <chip@perl.com> on 5/13/97
# - don't assume 'cc -n32' if the n32 libm.so is missing
+# Threaded by Jarkko Hietaniemi <jhi@iki.fi> on 11/18/97
+# - POSIX threads knowledge by IRIX version
+
# Use sh Configure -Dcc='cc -n32' to try compiling with -n32.
# or -Dcc='cc -n32 -mips3' (or -mips4) to force (non)portability
# Don't bother with -n32 unless you have the 7.1 or later compilers.
@@ -112,3 +115,49 @@ libswanted="$*"
set `echo X "$libswanted "|sed -e 's/ sun / /' -e 's/ crypt / /' -e 's/ bsd / /' -e 's/ PW / /'`
shift
libswanted="$*"
+
+if [ "X$usethreads" != "X" ]; then
+ if test ! -f /usr/include/pthread.h -o ! -f /usr/lib/libpthread.so; then
+ uname_r=`uname -r`
+ case "`uname -r`" in
+ 6.0|6.1)
+ echo >&4 "IRIX $uname_r does not have the POSIX threads."
+ echo >&4 "You should upgrade to at least IRIX 6.3."
+ echo >&4 "Cannot continue, aborting."
+ exit 1
+ ;;
+ 6.2)
+ echo >&4 ""
+cat >&4 <<EOF
+IRIX 6.2 $uname_r can have the POSIX threads.
+The following IRIX patches must, however, be installed:
+
+ 1404 Irix 6.2 Posix 1003.1b man pages
+ 1645 IRIX 6.2 & 6.3 POSIX header file updates
+ 2000 Irix 6.2 Posix 1003.1b support modules
+ 2254 Pthread library fixes
+
+Cannot continue, aborting.
+EOF
+ exit 1
+ ;;
+ 6.*|7.*)
+ echo >&4 "IRIX $uname_r should have the POSIX threads."
+ echo >&4 "But somehow you do not seem to have them installed."
+ echo >&4 "Cannot continue, aborting."
+ exit 1
+ ;;
+ esac
+ unset uname-r
+ fi
+ ccflags="-DUSE_THREADS $ccflags"
+ cppflags="-DUSE_THREADS $cppflags"
+ # -lpthread needs to come before -lc but after other libraries such
+ # as -lgdbm and such like. We assume here that -lc is present in
+ # libswanted. If that fails to be true in future, then this can be
+ # changed to add pthread to the very end of libswanted.
+ set `echo X "$libswanted "| sed -e 's/ c / pthread /'`
+ ld="cc"
+ shift
+ libswanted="$*"
+fi
diff --git a/hints/irix_6_0.sh b/hints/irix_6_0.sh
index 38fe27d282..e76890d120 100644
--- a/hints/irix_6_0.sh
+++ b/hints/irix_6_0.sh
@@ -41,3 +41,11 @@ libswanted="$*"
# set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ sun / /' -e 's/ crypt / /' -e 's/ nsl / /' -e 's/ dl / /'`
# shift
# libswanted="$*"
+
+if [ "X$usethreads" != "X" ]; then
+ echo >&4 "IRIX 6.0 does not have POSIX threads."
+ echo >&4 "You should upgrade to at least IRIX 6.3."
+ echo >&4 "Cannot continue, aborting."
+ exit 1
+fi
+
diff --git a/hints/irix_6_1.sh b/hints/irix_6_1.sh
index 38fe27d282..91c3ef8cf8 100644
--- a/hints/irix_6_1.sh
+++ b/hints/irix_6_1.sh
@@ -41,3 +41,10 @@ libswanted="$*"
# set `echo X "$libswanted "|sed -e 's/ socket / /' -e 's/ sun / /' -e 's/ crypt / /' -e 's/ nsl / /' -e 's/ dl / /'`
# shift
# libswanted="$*"
+
+if [ "X$usethreads" != "X" ]; then
+ echo >&4 "IRIX 6.1 does not have POSIX threads."
+ echo >&4 "You should upgrade to at least IRIX 6.3."
+ echo >&4 "Cannot continue, aborting."
+ exit 1
+fi
diff --git a/perl.h b/perl.h
index 431ac96bfe..9facb910bf 100644
--- a/perl.h
+++ b/perl.h
@@ -113,7 +113,7 @@ register struct op *op asm(stringify(OP_IN_REGISTER));
# define STANDARD_C 1
#endif
-#if defined(__cplusplus) || defined(WIN32)
+#if defined(__cplusplus) || defined(WIN32) || defined(__sgi)
# define DONT_DECLARE_STD 1
#endif
@@ -1375,7 +1375,7 @@ EXT struct thread * thr; /* Currently executing (fake) thread */
/* VMS doesn't use environ array and NeXT has problems with crt0.o globals */
#if !defined(VMS) && !(defined(NeXT) && defined(__DYNAMIC__))
-#if !defined(DONT_DECLARE_STD) || (defined(__svr4__) && defined(__GNUC__) && defined(sun))
+#if !defined(DONT_DECLARE_STD) || (defined(__svr4__) && defined(__GNUC__) && defined(sun)) || defined(__sgi)
extern char ** environ; /* environment variables supplied via exec */
#endif
#else