diff --git a/Mac/scripts/genpluginprojects.py b/Mac/scripts/genpluginprojects.py
index 4f0f89c..80185b5 100644
--- a/Mac/scripts/genpluginprojects.py
+++ b/Mac/scripts/genpluginprojects.py
@@ -30,13 +30,27 @@
 	rv = string.join(pathfields, os.sep)
 	return rv
 
-def genpluginproject(module,
+def genpluginproject(architecture, module,
 		project=None, projectdir=None,
 		sources=[], sourcedirs=[],
 		libraries=[], extradirs=[],
 		extraexportsymbols=[]):
+	if architecture == "all":
+		# For the time being we generate two project files. Not as nice as
+		# a single multitarget project, but easier to implement for now.
+		genpluginproject("ppc", module, project, projectdir, sources, sourcedirs,
+				libraries, extradirs, extraexportsymbols)
+		genpluginproject("carbon", module, project, projectdir, sources, sourcedirs,
+				libraries, extradirs, extraexportsymbols)
+		return
+	templatename = "template-%s" % architecture
+	targetname = "%s.%s" % (module, architecture)
+	dllname = "%s.%s.slb" % (module, architecture)
 	if not project:
-		project = module + '.mcp'
+		if architecture != "ppc":
+			project = "%s.%s.mcp"%(module, architecture)
+		else:
+			project = "%s.mcp"%module
 	if not projectdir:
 		projectdir = PROJECTDIR
 	if not sources:
@@ -54,6 +68,10 @@
 		else:
 			print "Warning: %s: sourcefile not found: %s"%(module, sources[0])
 			sourcedirs = []
+	if architecture == "carbon":
+		prefixname = "mwerks_carbonplugin_config.h"
+	else:
+		prefixname = "mwerks_plugin_config.h"
 	dict = {
 		"sysprefix" : relpath(projectdir, sys.prefix),
 		"sources" : sources,
@@ -61,28 +79,33 @@
 		"libraries": libraries,
 		"mac_outputdir" : "::Plugins",
 		"extraexportsymbols" : extraexportsymbols,
+		"mac_targetname" : targetname,
+		"mac_dllname" : dllname,
+		"prefixname" : prefixname,
 	}
-	mkcwproject.mkproject(os.path.join(projectdir, project), module, dict, force=FORCEREBUILD)
+	mkcwproject.mkproject(os.path.join(projectdir, project), module, dict, 
+			force=FORCEREBUILD, templatename=templatename)
 
 def	genallprojects(force=0):
 	global FORCEREBUILD
 	FORCEREBUILD = force
 	# Standard Python modules
-	genpluginproject("ucnhash", sources=["ucnhash.c"])
-	genpluginproject("pyexpat", 
+	genpluginproject("all", "ucnhash", sources=["ucnhash.c"])
+	genpluginproject("all", "pyexpat", 
 		sources=["pyexpat.c"], 
 		libraries=["libexpat.ppc.lib"], 
 		extradirs=["::::expat:*"])
-	genpluginproject("zlib", 
+	genpluginproject("all", "zlib", 
 		libraries=["zlib.ppc.Lib"], 
 		extradirs=["::::imglibs:zlib:mac", "::::imglibs:zlib"])
-	genpluginproject("gdbm", 
+	genpluginproject("all", "gdbm", 
 		libraries=["gdbm.ppc.gusi.lib"], 
 		extradirs=["::::gdbm:mac", "::::gdbm"])
 	
 	# bgen-generated Toolbox modules
-	genpluginproject("App", libraries=["AppearanceLib"])
-	genpluginproject("Cm",
+	genpluginproject("ppc", "App", libraries=["AppearanceLib"])
+	genpluginproject("carbon", "App")
+	genpluginproject("ppc", "Cm",
 		libraries=["QuickTimeLib"],
 		extraexportsymbols=[
 			"CmpObj_New",
@@ -90,23 +113,36 @@
 			"CmpInstObj_New",
 			"CmpInstObj_Convert",
 		])
-	genpluginproject("Fm")
-	genpluginproject("Help")
-	genpluginproject("Icn", libraries=["IconServicesLib"])
-	genpluginproject("List")
-	genpluginproject("Qt", libraries=["QuickTimeLib", "Cm.ppc.slb", "Qdoffs.ppc.slb"], extradirs=["::Plugins"])
-	genpluginproject("Qdoffs",
+	genpluginproject("carbon", "Cm",
+		extraexportsymbols=[
+			"CmpObj_New",
+			"CmpObj_Convert",
+			"CmpInstObj_New",
+			"CmpInstObj_Convert",
+		])
+	genpluginproject("all", "Fm")
+	genpluginproject("ppc", "Help")
+	genpluginproject("ppc", "Icn", libraries=["IconServicesLib"])
+	genpluginproject("carbon", "Icn")
+	genpluginproject("all", "List")
+	genpluginproject("ppc", "Qt", libraries=["QuickTimeLib", "Cm.ppc.slb", "Qdoffs.ppc.slb"], 
+			extradirs=["::Plugins"])
+	genpluginproject("carbon", "Qt", libraries=["Cm.carbon.slb", "Qdoffs.carbon.slb"],
+			extradirs=["::Plugins"])
+	genpluginproject("all", "Qdoffs",
 		extraexportsymbols=["GWorldObj_New", "GWorldObj_Convert"])
-	genpluginproject("Scrap")
-	genpluginproject("Snd", libraries=["SoundLib"])
-	genpluginproject("Sndihooks", sources=[":snd:Sndihooks.c"])
-	genpluginproject("TE", libraries=["DragLib"])
+	genpluginproject("ppc", "Scrap")
+	genpluginproject("ppc", "Snd", libraries=["SoundLib"])
+	genpluginproject("carbon", "Snd")
+	genpluginproject("all", "Sndihooks", sources=[":snd:Sndihooks.c"])
+	genpluginproject("ppc", "TE", libraries=["DragLib"])
+	genpluginproject("carbon", "TE")
 	
 	# Other Mac modules
-	genpluginproject("calldll", sources=["calldll.c"])
-	genpluginproject("ColorPicker")
-	genpluginproject("Printing")
-	genpluginproject("waste",
+	genpluginproject("all", "calldll", sources=["calldll.c"])
+	genpluginproject("all", "ColorPicker")
+	genpluginproject("ppc", "Printing")
+	genpluginproject("ppc", "waste",
 		sources=[
 			"wastemodule.c",
 			'WEAccessors.c', 'WEBirthDeath.c', 'WEDebug.c',
@@ -122,11 +158,11 @@
 			'::::Waste 1.3 Distribution:*',
 			'::::ICProgKit1.4:APIs']
 		)
-	genpluginproject("ctb")
-	genpluginproject("icglue", sources=["icgluemodule.c"], 
+	genpluginproject("ppc", "ctb")
+	genpluginproject("ppc", "icglue", sources=["icgluemodule.c"], 
 		libraries=["ICGlueCFM-PPC.lib"], 
 		extradirs=["::::ICProgKit1.4:APIs"])
-	genpluginproject("macspeech", libraries=["SpeechLib"])
+	genpluginproject("ppc", "macspeech", libraries=["SpeechLib"])
 
 if __name__ == '__main__':
 	genallprojects()
