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: ...@@ -53,6 +53,8 @@ class ProjectBuilder:
dict['stdlibraryflags'] = 'Debug' dict['stdlibraryflags'] = 'Debug'
if not dict.has_key('libraryflags'): if not dict.has_key('libraryflags'):
dict['libraryflags'] = 'Debug' dict['libraryflags'] = 'Debug'
if not dict.has_key('initialize'):
dict['initialize'] = '__initialize'
if not dict.has_key('mac_sysprefixtype'): if not dict.has_key('mac_sysprefixtype'):
if os.path.isabs(dict['sysprefix']): if os.path.isabs(dict['sysprefix']):
dict['mac_sysprefixtype'] = 'Absolute' dict['mac_sysprefixtype'] = 'Absolute'
......
...@@ -558,7 +558,7 @@ ...@@ -558,7 +558,7 @@
<SETTING><NAME>MWLinker_PPC_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING>
<SETTING><NAME>MWLinker_PPC_permitmultdefs</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_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_mainname</NAME><VALUE></VALUE></SETTING>
<SETTING><NAME>MWLinker_PPC_termname</NAME><VALUE>__terminate</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_termname</NAME><VALUE>__terminate</VALUE></SETTING>
......
...@@ -549,7 +549,7 @@ ...@@ -549,7 +549,7 @@
<SETTING><NAME>MWLinker_PPC_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING>
<SETTING><NAME>MWLinker_PPC_permitmultdefs</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_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_mainname</NAME><VALUE></VALUE></SETTING>
<SETTING><NAME>MWLinker_PPC_termname</NAME><VALUE>__terminate</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_termname</NAME><VALUE>__terminate</VALUE></SETTING>
......
...@@ -36,16 +36,17 @@ def genpluginproject(architecture, module, ...@@ -36,16 +36,17 @@ def genpluginproject(architecture, module,
sources=[], sourcedirs=[], sources=[], sourcedirs=[],
libraries=[], extradirs=[], libraries=[], extradirs=[],
extraexportsymbols=[], outputdir=":::Lib:lib-dynload", extraexportsymbols=[], outputdir=":::Lib:lib-dynload",
libraryflags=None, stdlibraryflags=None, prefixname=None): libraryflags=None, stdlibraryflags=None, prefixname=None,
initialize=None):
if architecture == "all": if architecture == "all":
# For the time being we generate two project files. Not as nice as # For the time being we generate two project files. Not as nice as
# a single multitarget project, but easier to implement for now. # a single multitarget project, but easier to implement for now.
genpluginproject("ppc", module, project, projectdir, sources, sourcedirs, genpluginproject("ppc", module, project, projectdir, sources, sourcedirs,
libraries, extradirs, extraexportsymbols, outputdir, libraryflags, libraries, extradirs, extraexportsymbols, outputdir, libraryflags,
stdlibraryflags, prefixname) stdlibraryflags, prefixname, initialize)
genpluginproject("carbon", module, project, projectdir, sources, sourcedirs, genpluginproject("carbon", module, project, projectdir, sources, sourcedirs,
libraries, extradirs, extraexportsymbols, outputdir, libraryflags, libraries, extradirs, extraexportsymbols, outputdir, libraryflags,
stdlibraryflags, prefixname) stdlibraryflags, prefixname, initialize)
return return
templatename = "template-%s" % architecture templatename = "template-%s" % architecture
targetname = "%s.%s" % (module, architecture) targetname = "%s.%s" % (module, architecture)
...@@ -99,6 +100,8 @@ def genpluginproject(architecture, module, ...@@ -99,6 +100,8 @@ def genpluginproject(architecture, module,
dict['libraryflags'] = libraryflags dict['libraryflags'] = libraryflags
if stdlibraryflags: if stdlibraryflags:
dict['stdlibraryflags'] = stdlibraryflags dict['stdlibraryflags'] = stdlibraryflags
if initialize:
dict['initialize'] = initialize
mkcwproject.mkproject(os.path.join(projectdir, project), module, dict, mkcwproject.mkproject(os.path.join(projectdir, project), module, dict,
force=FORCEREBUILD, templatename=templatename) 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