Allow the shared library initialization routine to be overridden with an initialize=xxx argument.

Should fix #492465.
diff --git a/Mac/Lib/mkcwproject/cwxmlgen.py b/Mac/Lib/mkcwproject/cwxmlgen.py
index e80cfa7..0ffe12f 100644
--- a/Mac/Lib/mkcwproject/cwxmlgen.py
+++ b/Mac/Lib/mkcwproject/cwxmlgen.py
@@ -53,6 +53,8 @@
 			dict['stdlibraryflags'] = 'Debug'
 		if not dict.has_key('libraryflags'):
 			dict['libraryflags'] = 'Debug'
+		if not dict.has_key('initialize'):
+			dict['initialize'] = '__initialize'
 		if not dict.has_key('mac_sysprefixtype'):
 			if os.path.isabs(dict['sysprefix']):
 				dict['mac_sysprefixtype'] = 'Absolute'
diff --git a/Mac/Lib/mkcwproject/template-carbon/template.prj.xml b/Mac/Lib/mkcwproject/template-carbon/template.prj.xml
index d0550f5..5c426a1 100644
--- a/Mac/Lib/mkcwproject/template-carbon/template.prj.xml
+++ b/Mac/Lib/mkcwproject/template-carbon/template.prj.xml
@@ -558,7 +558,7 @@
                 <SETTING><NAME>MWLinker_PPC_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING>
                 <SETTING><NAME>MWLinker_PPC_permitmultdefs</NAME><VALUE>0</VALUE></SETTING>
                 <SETTING><NAME>MWLinker_PPC_linkmode</NAME><VALUE>Fast</VALUE></SETTING>
-                <SETTING><NAME>MWLinker_PPC_initname</NAME><VALUE>__initialize</VALUE></SETTING>
+                <SETTING><NAME>MWLinker_PPC_initname</NAME><VALUE>%(initialize)s</VALUE></SETTING>
                 <SETTING><NAME>MWLinker_PPC_mainname</NAME><VALUE></VALUE></SETTING>
                 <SETTING><NAME>MWLinker_PPC_termname</NAME><VALUE>__terminate</VALUE></SETTING>
 
diff --git a/Mac/Lib/mkcwproject/template-ppc/template.prj.xml b/Mac/Lib/mkcwproject/template-ppc/template.prj.xml
index 0c79f67..65ca175 100644
--- a/Mac/Lib/mkcwproject/template-ppc/template.prj.xml
+++ b/Mac/Lib/mkcwproject/template-ppc/template.prj.xml
@@ -549,7 +549,7 @@
                 <SETTING><NAME>MWLinker_PPC_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING>
                 <SETTING><NAME>MWLinker_PPC_permitmultdefs</NAME><VALUE>0</VALUE></SETTING>
                 <SETTING><NAME>MWLinker_PPC_linkmode</NAME><VALUE>Fast</VALUE></SETTING>
-                <SETTING><NAME>MWLinker_PPC_initname</NAME><VALUE>__initialize</VALUE></SETTING>
+                <SETTING><NAME>MWLinker_PPC_initname</NAME><VALUE>%(initialize)s</VALUE></SETTING>
                 <SETTING><NAME>MWLinker_PPC_mainname</NAME><VALUE></VALUE></SETTING>
                 <SETTING><NAME>MWLinker_PPC_termname</NAME><VALUE>__terminate</VALUE></SETTING>
 
diff --git a/Mac/scripts/genpluginprojects.py b/Mac/scripts/genpluginprojects.py
index 1286993..3e2e443 100644
--- a/Mac/scripts/genpluginprojects.py
+++ b/Mac/scripts/genpluginprojects.py
@@ -36,16 +36,17 @@
 		sources=[], sourcedirs=[],
 		libraries=[], extradirs=[],
 		extraexportsymbols=[], outputdir=":::Lib:lib-dynload",
-		libraryflags=None, stdlibraryflags=None, prefixname=None):
+		libraryflags=None, stdlibraryflags=None, prefixname=None,
+		initialize=None):
 	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, outputdir, libraryflags,
-				stdlibraryflags, prefixname)
+				stdlibraryflags, prefixname, initialize)
 		genpluginproject("carbon", module, project, projectdir, sources, sourcedirs,
 				libraries, extradirs, extraexportsymbols, outputdir, libraryflags,
-				stdlibraryflags, prefixname)
+				stdlibraryflags, prefixname, initialize)
 		return
 	templatename = "template-%s" % architecture
 	targetname = "%s.%s" % (module, architecture)
@@ -99,6 +100,8 @@
 		dict['libraryflags'] = libraryflags
 	if stdlibraryflags:
 		dict['stdlibraryflags'] = stdlibraryflags
+	if initialize:
+		dict['initialize'] = initialize
 	mkcwproject.mkproject(os.path.join(projectdir, project), module, dict, 
 			force=FORCEREBUILD, templatename=templatename)