diff -urpN john-1.7.8-jumbo-4a/src/Makefile john-1.7.8-jumbo-4b/src/Makefile
--- john-1.7.8-jumbo-4a/src/Makefile	2011-07-24 22:41:51.140625000 +0000
+++ john-1.7.8-jumbo-4b/src/Makefile	2011-07-24 22:30:41.265625000 +0000
@@ -41,16 +41,11 @@ LDFLAGS_MKV = -s -lm
 OPT_NORMAL = -funroll-loops
 OPT_INLINE = -finline-functions
 
-# Requires GNU make (under Solaris, use "gmake")
-PLUGFORMATS_SRCS = $(wildcard *_plug.c)
+# Works with Solaris make, and GNU make
+PLUGFORMATS_SRCS: sh =echo *_plug.c
+PLUGFORMATS_SRCS += $(wildcard *_plug.c)
 PLUGFORMATS_OBJS = $(PLUGFORMATS_SRCS:.c=.o)
 
-# Weird alternative to the above, which presumably works with Solaris native
-# make, as well as with GNU make.
-#PLUGFORMATS_SRCS: sh =if [ -f *_plug.c ]; then ls *_plug.c; fi
-#PLUGFORMATS_SRCS += $(shell ls *_plug.c)
-#PLUGFORMATS_OBJS = $(PLUGFORMATS_SRCS:.c=.o)
-
 JOHN_OBJS = \
 	$(MPIOBJ) \
 	DES_fmt.o DES_std.o DES_bs.o DES_bs_b.o \
@@ -1230,10 +1225,10 @@ bench-t.o: bench.c
 	$(CC) $(CFLAGS) $(OPT_NORMAL) -D_JOHN_BENCH_TMP bench.c -o bench-t.o
 
 fmt_externs.h: $(PLUGFORMATS_SRCS) Makefile
-	$(SED) -n 's/^\(struct fmt_main [^ ]\+\) =.*/extern \1;/p' *_fmt_plug.c > fmt_externs.h
+	$(SED) -n 's/^\(struct fmt_main [^ ]*\) =.*/extern \1;/p' *_fmt_plug.c > fmt_externs.h
 
 fmt_registers.h: $(PLUGFORMATS_SRCS) Makefile
-	$(SED) -n 's/^struct fmt_main \([^ ]\+\) =.*/john_register_one(\&\1);/p' *_fmt_plug.c > fmt_registers.h
+	$(SED) -n 's/^struct fmt_main \([^ ]*\) =.*/john_register_one(\&\1);/p' *_fmt_plug.c > fmt_registers.h
 
 john.o: john.c fmt_externs.h fmt_registers.h
 	$(CC) $(CFLAGS) $(OPT_NORMAL) john.c
