diff --git a/configure.in b/configure.in
index 7564d78..a5ddbed 100644
--- a/configure.in
+++ b/configure.in
@@ -4,6 +4,44 @@
 AC_INIT(Include/object.h)
 AC_CONFIG_HEADER(config.h)
 
+# NEXTSTEP stuff
+AC_MSG_CHECKING(for --with-next-archs)
+AC_ARG_WITH(next-archs,
+ [--with-next-archs='arch1 arch2 ..'   build MAB binary], [
+	if test -n "$withval"; then
+		ac_sys_cpu=_`/usr/lib/arch_tool -choose_obj_dir $withval`
+		ac_arch_flags=`/usr/lib/arch_tool -archify_list $withval`
+	else
+		ac_sys_cpu=_`arch`
+	fi
+], [])
+AC_MSG_RESULT($with_next_archs)
+
+# Set name for machine-dependent library files
+AC_SUBST(MACHDEP)
+AC_MSG_CHECKING(MACHDEP)
+if test -z "$MACHDEP"
+then
+	if test -f /usr/lib/NextStep/software_version; then
+		set X `hostinfo | grep 'NeXT Mach.*:' | \
+			sed -e 's/://' -e 's/\./_/'` && \
+		ac_sys_system=next && ac_sys_release=$4
+		MACHDEP="$ac_sys_system$ac_sys_release$ac_sys_cpu"
+	else
+		ac_sys_system=`uname -s`
+		ac_sys_release=`uname -r`
+		ac_md_system=`echo $ac_sys_system |
+				   tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
+		ac_md_release=`echo $ac_sys_release |
+				   tr -d '[/ ]' | sed 's/\..*//'`
+		MACHDEP="$ac_md_system$ac_md_release"
+	fi
+	case MACHDEP in
+	'')	MACHDEP=unknown;;
+	esac
+fi
+AC_MSG_RESULT($MACHDEP)
+
 # checks for alternative programs
 AC_MSG_CHECKING(for --without-gcc)
 AC_ARG_WITH(gcc, [--without-gcc             never use gcc], [
@@ -15,7 +53,7 @@
 	*)	CC=$withval
 		without_gcc=$withval;;
 	esac], [
-	case `uname -s` in
+	case $ac_sys_system in
 	OSF1)	CC=cc
 		without_gcc=;;
 	*)	without_gcc=no;;
@@ -46,10 +84,20 @@
 	INSTALL_PROGRAM="$INSTALL"
 	INSTALL_DATA="$INSTALL -m 644"
 fi
-AC_SUBST(OPT)
+
 # Optimizer/debugger flags passed between Makefiles
+AC_SUBST(OPT)
 if test -z "$OPT"
-then OPT=-O
+then
+	case $ac_sys_system in
+	NeXT|next) \
+		if test -n "$ac_arch_flags"; then
+			OPT="-g -Wall -O3 -fomit-frame-pointer $ac_arch_flags";
+		else
+			OPT="-g -Wall -O3 -fomit-frame-pointer";
+		fi;;
+	*)	OPT="-O";;
+	esac
 fi
 
 # checks for UNIX variants that set C preprocessor variables
@@ -77,31 +125,12 @@
 AC_TYPE_SIZE_T
 AC_TYPE_UID_T
 
-# Set name for machine-dependent library files
-AC_SUBST(MACHDEP)
-AC_MSG_CHECKING(MACHDEP)
-if test -z "$MACHDEP"
-then
-	ac_sys_system=`uname -s | tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
-	ac_sys_release=`uname -r | tr -d '[/ ]' | sed 's/\..*//'`
-	ac_sys_cpu=`(uname -p 2>/dev/null || uname -m) |
-		     tr '[[A-Z]]' '[[a-z]]'`
-##	MACHDEP="$ac_sys_system$ac_sys_release$ac_sys_cpu"
-	MACHDEP="$ac_sys_system$ac_sys_release"
-	case MACHDEP in
-	'')	MACHDEP=unknown;;
-	esac
-fi
-AC_MSG_RESULT($MACHDEP)
 
 # Set info about shared libraries.
-# XXX This should try things out instead of testing uname!
 AC_SUBST(SO)
 AC_SUBST(LDSHARED)
 AC_SUBST(CCSHARED)
 AC_SUBST(LINKFORSHARED)
-ac_sys_system=`uname -s`
-ac_sys_release=`uname -r`
 # SO is the extension of shared libraries `(including the dot!)
 # -- usually .so, .sl on HP-UX
 AC_MSG_CHECKING(SO)
@@ -109,6 +138,7 @@
 then
 	case $ac_sys_system in
 	hp*|HP*) SO=.sl;;
+	NeXT|next) SO=.a;; # no shared libs on NeXT 3.3 and less
 	*)	SO=.so;;
 	esac
 fi
@@ -127,6 +157,7 @@
 	DYNIX/ptx*) LDSHARED="ld -G";;
 	Linux*) LDSHARED="gcc -shared";;
 	FreeBSD*) LDSHARED="ld -Bshareable";;
+	NeXT|next/3*) LDSHARED="ld -u libsys_s";;
 	*)	LDSHARED="ld";;
 	esac
 fi
@@ -206,6 +237,9 @@
 if test -d "$withval"
 then LIBS="$LIBS -L$withval"
 fi
+AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
+AC_DEFINE(C_THREADS)
+LIBOBJS="$LIBOBJS thread.o"],[
 AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
 AC_DEFINE(_POSIX_THREADS)
 LIBS="$LIBS -lpthreads"
@@ -214,7 +248,7 @@
 AC_DEFINE(_POSIX_THREADS)
 LIBS="$LIBS -lpthread"
 LIBOBJS="$LIBOBJS thread.o"])
-])
+])])
 AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
 LIBS="$LIBS -lmpc"
 LIBOBJS="$LIBOBJS thread.o"])
@@ -258,7 +292,7 @@
  link lstat mkfifo nice plock putenv readlink \
  select setgid setuid setsid setpgid setpgrp setvbuf \
  sigaction siginterrupt sigrelse strftime symlink \
- tcgetpgrp tcsetpgrp times truncate uname waitpid) \
+ tcgetpgrp tcsetpgrp times truncate uname waitpid)
 AC_REPLACE_FUNCS(dup2 getcwd strerror memmove)
 AC_CHECK_FUNC(getpgrp, AC_TRY_COMPILE([#include <unistd.h>], [getpgrp(0);], AC_DEFINE(GETPGRP_HAVE_ARG)))
 AC_CHECK_FUNC(setpgrp, AC_TRY_COMPILE([#include <unistd.h>], [setpgrp(0,0);], AC_DEFINE(SETPGRP_HAVE_ARG)))
@@ -402,4 +436,8 @@
 AC_SUBST(LIBOBJS)dnl
 
 # generate output files
-AC_OUTPUT(Makefile Objects/Makefile Parser/Makefile Python/Makefile Modules/Makefile.pre)
+AC_OUTPUT(Makefile \
+ Objects/Makefile \
+ Parser/Makefile \
+ Python/Makefile \
+ Modules/Makefile.pre)
