Unixware 7 support by Billy G. Allie (SF patch 413011)
diff --git a/configure.in b/configure.in
index 5dcd765..9fe7a9f 100644
--- a/configure.in
+++ b/configure.in
@@ -52,7 +52,9 @@
 if test -z "$MACHDEP"
 then
 	ac_sys_system=`uname -s`
-	if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64"; then
+	if test "$ac_sys_system" = "AIX" -o \
+		"$ac_sys_system" = "Monterey64" -o \
+		"$ac_sys_system" = "UnixWare"; then
 		ac_sys_release=`uname -v`
 	else
 		ac_sys_release=`uname -r`
@@ -125,8 +127,15 @@
 		;;
     Monterey*)
         RANLIB=:
-        without_gcc=;;
-	*)	without_gcc=no;;
+	    without_gcc=
+	    ;;
+	UnixWare*)
+	    RANLIB=:
+	    without_gcc=
+	    ;;
+	*)
+	    without_gcc=no
+	    ;;
 	esac])
 AC_MSG_RESULT($without_gcc)
 
@@ -264,6 +273,9 @@
       LDLIBRARY='libpython$(VERSION).dll.a'
       DLLLIBRARY='libpython$(VERSION).dll'
       ;;
+unixware*)
+      LDLIBRARY='libpython$(VERSION).so'
+      ;;
 esac
 AC_MSG_RESULT($LDLIBRARY)
 
@@ -298,12 +310,20 @@
 	case $GCC in
 	yes)
 		case $ac_cv_prog_cc_g in
-		yes)	OPT="-g -O2 -Wall -Wstrict-prototypes";;
-		*)	OPT="-O2 -Wall -Wstrict-prototypes";;
+	yes)
+	    OPT="-g -O2 -Wall -Wstrict-prototypes";;
+	*)
+	    OPT="-O2 -Wall -Wstrict-prototypes";;
 		esac
 		;;
-	*)	OPT="-O";;
+    *)
+	case $ac_sys_system in
+	UnixWare*)
+	    OPT="-O -K pentium,host,inline,loop_unroll,alloca ";;
+	*)
+	    OPT="-O";;
 	esac
+    esac
 fi
 
 # The current (beta) Monterey compiler dies with optimizations
@@ -597,7 +617,7 @@
 	UnixWare*)
 		if test "$GCC" = "yes"
 		then LDSHARED="$(CC) -shared"
-		else LDSHARED="$(CC) -G"
+		else LDSHARED="ld -G -dy -Bdynamic"
 		fi;;
 	SCO_SV*) LDSHARED="cc -G -KPIC -Ki486 -belf -Wl,-Bexport";;
 	Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
@@ -627,7 +647,7 @@
 	UnixWare*)
 		if test "$GCC" = "yes"
 		then CCSHARED="-fPIC"
-		else CCSHARED="-KPIC"
+		else CCSHARED="-KPIC -G -dy -Bdynamic"
 		fi;;
 	SCO_SV*) CCSHARED="-KPIC -dy -Bdynamic";;
 	Monterey*) CCSHARED="-G";;
@@ -658,7 +678,7 @@
 	# loading of any modules which reference it in System.framework
 	next/4*|next/5*) LINKFORSHARED="-u __dummy -framework System" ;;
 	Darwin/*) LINKFORSHARED="-u __dummy -framework System -framework Foundation" ;;
-	UnixWare*) LINKFORSHARED="-Wl,-Bexport";;
+	UnixWare*) LINKFORSHARED="-dy -Bdynamic -Wl,-Bexport";;
 	SCO_SV*) LINKFORSHARED="-Bdynamic -dy -Wl,-Bexport";;
 	ReliantUNIX*) LINKFORSHARED="-W1 -Blargedynsym";;
 	FreeBSD*|NetBSD*) 
@@ -793,77 +813,86 @@
 then
     USE_THREAD_MODULE="#"
 else
-    if test ! -z "$with_threads" -a -d "$with_threads"
-    then LDFLAGS="$LDFLAGS -L$with_threads"
-    fi
-    if test ! -z "$withval" -a -d "$withval"
-    then LDFLAGS="$LDFLAGS -L$withval"
-    fi
-    AC_DEFINE(_REENTRANT)
-    AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(C_THREADS)
-    LIBOBJS="$LIBOBJS thread.o"],[
-    AC_MSG_CHECKING(for --with-pth)
-    AC_ARG_WITH(pth,
-    [  --with-pth                      use GNU pth threading libraries], [
-    AC_MSG_RESULT($withval)
-    AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(HAVE_PTH)
-    LIBS="-lpth $LIBS"
-    LIBOBJS="$LIBOBJS thread.o"],[
-    AC_MSG_RESULT(no)
-    AC_CHECK_LIB(pthread, pthread_create, [AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(_POSIX_THREADS)
-    LIBS="-lpthread $LIBS"
-    LIBOBJS="$LIBOBJS thread.o"],[
-    AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
-    case $ac_sys_system in
-      Darwin*) ;;
-      *) AC_DEFINE(_POSIX_THREADS);;
-    esac
-    LIBOBJS="$LIBOBJS thread.o"],[
-    AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(BEOS_THREADS)
-    LIBOBJS="$LIBOBJS thread.o"],[
-    AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(_POSIX_THREADS)
-    LIBS="$LIBS -lpthreads"
-    LIBOBJS="$LIBOBJS thread.o"], [
-    AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(_POSIX_THREADS)
-    LIBS="$LIBS -lc_r"
-    LIBOBJS="$LIBOBJS thread.o"], [
-    AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(_POSIX_THREADS)
-    LIBS="$LIBS -lthread"
-    LIBOBJS="$LIBOBJS thread.o"], [
-    AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(_POSIX_THREADS)
-    LIBS="$LIBS -lpthread"
-    LIBOBJS="$LIBOBJS thread.o"], [
-    AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
-    AC_DEFINE(_POSIX_THREADS)
-    LIBS="$LIBS -lcma"
-    LIBOBJS="$LIBOBJS thread.o"],[
-    USE_THREAD_MODULE="#"])
-    ])])])])])])])])])
+    if test "$ac_sys_system" = "UnixWare"
+     then
+	CC="${CC} -Kthread"
+	LIBOBJS="$LIBOBJS thread.o"
+	AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(_POSIX_THREADS)
+	USE_THREAD_MODULE=""
+    else
+	if test ! -z "$with_threads" -a -d "$with_threads"
+	then LDFLAGS="$LDFLAGS -L$with_threads"
+	fi
+	if test ! -z "$withval" -a -d "$withval"
+	then LDFLAGS="$LDFLAGS -L$withval"
+	fi
+	AC_DEFINE(_REENTRANT)
+	AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(C_THREADS)
+	LIBOBJS="$LIBOBJS thread.o"],[
+	AC_MSG_CHECKING(for --with-pth)
+	AC_ARG_WITH(pth,
+	[  --with-pth                      use GNU pth threading libraries], [
+	AC_MSG_RESULT($withval)
+	AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(HAVE_PTH)
+	LIBS="-lpth $LIBS"
+	LIBOBJS="$LIBOBJS thread.o"],[
+	AC_MSG_RESULT(no)
+	AC_CHECK_LIB(pthread, pthread_create, [AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(_POSIX_THREADS)
+	LIBS="-lpthread $LIBS"
+	LIBOBJS="$LIBOBJS thread.o"],[
+	AC_CHECK_FUNC(pthread_detach, [AC_DEFINE(WITH_THREAD)
+	case $ac_sys_system in
+	  Darwin*) ;;
+	  *) AC_DEFINE(_POSIX_THREADS);;
+	esac
+	LIBOBJS="$LIBOBJS thread.o"],[
+	AC_CHECK_HEADER(kernel/OS.h, [AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(BEOS_THREADS)
+	LIBOBJS="$LIBOBJS thread.o"],[
+	AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(_POSIX_THREADS)
+	LIBS="$LIBS -lpthreads"
+	LIBOBJS="$LIBOBJS thread.o"], [
+	AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(_POSIX_THREADS)
+	LIBS="$LIBS -lc_r"
+	LIBOBJS="$LIBOBJS thread.o"], [
+	AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(_POSIX_THREADS)
+	LIBS="$LIBS -lthread"
+	LIBOBJS="$LIBOBJS thread.o"], [
+	AC_CHECK_LIB(pthread, __pthread_create_system, [AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(_POSIX_THREADS)
+	LIBS="$LIBS -lpthread"
+	LIBOBJS="$LIBOBJS thread.o"], [
+	AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
+	AC_DEFINE(_POSIX_THREADS)
+	LIBS="$LIBS -lcma"
+	LIBOBJS="$LIBOBJS thread.o"],[
+	USE_THREAD_MODULE="#"])
+	])])])])])])])])])
 
-    AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
-    LIBS="$LIBS -lmpc"
-    LIBOBJS="$LIBOBJS thread.o"
-    USE_THREAD_MODULE=""])
-    AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
-    LIBS="$LIBS -lthread"
-    LIBOBJS="$LIBOBJS thread.o"
-    USE_THREAD_MODULE=""])
+	AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
+	LIBS="$LIBS -lmpc"
+	LIBOBJS="$LIBOBJS thread.o"
+	USE_THREAD_MODULE=""])
+	AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
+	LIBS="$LIBS -lthread"
+	LIBOBJS="$LIBOBJS thread.o"
+	USE_THREAD_MODULE=""])
 
-    if test "$USE_THREAD_MODULE" != "#"
-    then
-        # If the above checks didn't disable threads, (at least) OSF1
-        # needs this '-threads' argument during linking.
-        case $ac_sys_system in
-        OSF1) LDLAST=-threads;;
-        esac
+	if test "$USE_THREAD_MODULE" != "#"
+	then
+	    # If the above checks didn't disable threads, (at least) OSF1
+	    # needs this '-threads' argument during linking.
+	    case $ac_sys_system in
+	    OSF1) LDLAST=-threads;;
+	    esac
+	fi
     fi
 fi