Commit b66e1a3d authored by Jack Jansen's avatar Jack Jansen

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

Should fix #492465.
parent dc745687
......@@ -53,6 +53,8 @@ class ProjectBuilder:
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'
......
......@@ -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>
......
......@@ -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>
......
......@@ -36,16 +36,17 @@ def genpluginproject(architecture, module,
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 @@ def genpluginproject(architecture, module,
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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment