Allow parallel builds:

	1. First, modify make_voice_list script to accept the
	   output file (defaulting to flite_voice_list.c as before).
	2. Use a per-library subdirectory to build shared objecs from
	   the .shared.a-counterparts -- using the same shared_os/
	   was causing conflicts, when multiple such libraries were
	   built in parallel.
	3. Use the new feature of make_voice_list (see 1.) to build
	   separate voice-list files for each voice, thus avoiding
	   the last sort of conflicts.

This also removes linking unnecessary libraries into flite_VOICE
executables -- only the library providing the particular voice is used
now.

	-mi

--- tools/make_voice_list	2009-04-08 09:18:42.000000000 -0400
+++ tools/make_voice_list	2014-12-01 19:39:40.000000000 -0500
@@ -36,26 +36,38 @@
 ###########################################################################
 
-rm -f flite_voice_list.c
+case "$1" in
+-o)
+	output=$2
+	shift 2
+	;;
+*)
+	output=flite_voice_list.c
+	;;
+esac
+
+rm -f $output
+exec > $output
+
+cat << EOT
+/* Generated automatically from make_voice_list */
+
+#include "flite.h"
+
+EOT
 
-echo "/* Generated automatically from make_voice_list */" >flite_voice_list.c
-echo >>flite_voice_list.c
-echo '#include "flite.h"' >>flite_voice_list.c
-echo >>flite_voice_list.c
 for i in $*
 do
-   echo "cst_voice *register_"$i"(const char *voxdir);">>flite_voice_list.c
+   echo "cst_voice *register_"$i"(const char *voxdir);"
 done
 
-echo >>flite_voice_list.c
-echo "cst_val *flite_set_voice_list(void)" >>flite_voice_list.c
-echo "{" >>flite_voice_list.c
+echo
+echo "cst_val *flite_set_voice_list(void)"
+echo "{"
 for i in $*
 do
-   echo "   flite_voice_list = cons_val(voice_val(register_"$i"(NULL)),flite_voice_list);" >>flite_voice_list.c
+   echo "   flite_voice_list = cons_val(voice_val(register_"$i"(NULL)),flite_voice_list);"
 done
-   echo "   flite_voice_list = val_reverse(flite_voice_list);" >>flite_voice_list.c
-   echo "   return flite_voice_list;" >>flite_voice_list.c
-
-echo "}" >>flite_voice_list.c
-echo >>flite_voice_list.c
+   echo "   flite_voice_list = val_reverse(flite_voice_list);"
+   echo "   return flite_voice_list;"
 
+echo "}"
--- config/common_make_rules	2009-07-30 10:52:56.000000000 -0400
+++ config/common_make_rules	2014-12-01 19:43:50.000000000 -0500
@@ -121,11 +121,11 @@
 $(LIBDIR)/%.so: $(LIBDIR)/%.shared.a
 	@ echo making $@
-	@ rm -rf shared_os && mkdir shared_os
+	@ rm -rf shared_os.$* && mkdir shared_os.$*
 	@ rm -f $@ $@.${PROJECT_VERSION} $@.${PROJECT_SHLIB_VERSION} 
-	@ (cd shared_os && ar x ../$<)
-	@ (cd shared_os && $(CC) -shared -Wl,-soname,`basename $@`.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os)
+	@ (cd shared_os.$* && ar x ../$<)
+	@ (cd shared_os.$* && $(CC) -shared -Wl,-soname,`basename $@`.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os)
 	@ (cd $(LIBDIR) && ln -s `basename $@.${PROJECT_VERSION}` `basename $@.${PROJECT_SHLIB_VERSION}` )
 	@ (cd $(LIBDIR) && ln -s `basename $@.${PROJECT_SHLIB_VERSION}` `basename $@` )
-	@ rm -rf shared_os
+	@ rm -rf shared_os.$*
 
 $(OBJDIR)/.make_build_dirs:
--- main/Makefile	2009-08-14 17:11:07.000000000 -0400
+++ main/Makefile	2014-12-01 21:07:35.000000000 -0500
@@ -40,5 +40,5 @@
 ALL_DIRS= 
 SRCS = flite_main.c flite_time_main.c t2p_main.c compile_regexes.c
-OBJS = $(SRCS:.c=.o) flite_voice_list.o
+OBJS = $(SRCS:.c=.o)
 FILES = Makefile $(SRCS)
 LOCAL_INCLUDES = 
@@ -47,8 +47,9 @@
       $(BINDIR)/flite$(EXEEXT) \
       $(BINDIR)/t2p$(EXEEXT) $(BINDIR)/compile_regexes$(EXEEXT) \
-      flite_voice_list.c each $(EXTRABINS)
+      $(EXTRABINS)
 
 VOICES=$(VOXES)
 VOICELIBS=$(VOICES:%=flite_%)
+VOICEEXES=$(VOICES:%=${BINDIR}/flite_%)
 
 flite_LIBS = $(VOICELIBS) $(LANGS:%=flite_%) $(LEXES:%=flite_%) flite
@@ -76,5 +77,4 @@
 
 ifdef SHFLAGS
-flite_LIBS_flags += -Wl,-rpath $(LIBDIR) 
 shared_libs: $(SHAREDLIBS)
 else
@@ -82,9 +82,9 @@
 endif
 
-$(BINDIR)/flite$(EXEEXT): flite_main.o $(flite_LIBS_deps)
+flite_voice_list.c:
 	$(TOP)/tools/make_voice_list $(VOICES)
-	rm -f flite_voice_list.o
-	$(MAKE) flite_voice_list.o
-	$(CC) $(CFLAGS) -o $@ flite_main.o flite_voice_list.o $(flite_LIBS_flags) $(LDFLAGS)
+
+$(BINDIR)/flite$(EXEEXT): flite_main.o flite_voice_list.c $(flite_LIBS_deps)
+	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ flite_main.o flite_voice_list.c $(flite_LIBS_flags) $(LDFLAGS)
 
 $(BINDIR)/flite_time$(EXEEXT): flite_time_main.o $(flite_time_LIBS_deps)
@@ -98,15 +98,12 @@
 	$(CC) $(CFLAGS) -o $@ compile_regexes.o $(FLITELIBFLAGS) $(LDFLAGS)
 
-each:
-	@ for i in $(VOICES) ; \
-	do \
-	   $(MAKE) VOICE=$$i $(BINDIR)/flite_$$i ; \
-	done
+each:	${VOICEEXES}
+
+voice_list_%.c: $(TOP)/tools/make_voice_list
+	$(TOP)/tools/make_voice_list -o $@
 
-$(BINDIR)/flite_${VOICE}: flite_main.o $(flite_LIBS_deps)
-	$(TOP)/tools/make_voice_list $(VOICE)
-	rm -f flite_voice_list.o
-	$(MAKE) flite_voice_list.o
-	$(CC) $(CFLAGS) -o $@ flite_main.o flite_voice_list.o $(flite_LIBS_flags) $(LDFLAGS)
+$(BINDIR)/flite_%: voice_list_%.c flite_main.o $(flite_LIBS_deps)
+	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ flite_main.o voice_list_$*.c \
+	    $(filter-out -lflite_cmu_%,${flite_LIBS_flags}) -lflite_$* $(LDFLAGS)
 
 install:
