Generate Carbon as well as classic PPC plugin projects. This module is finally paying back the investment in it!
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()