mslink.py (SCons-4.3.0) | : | mslink.py (SCons-4.4.0) | ||
---|---|---|---|---|
skipping to change at line 46 | skipping to change at line 46 | |||
import SCons.Action | import SCons.Action | |||
import SCons.Defaults | import SCons.Defaults | |||
import SCons.Errors | import SCons.Errors | |||
import SCons.Platform.win32 | import SCons.Platform.win32 | |||
import SCons.Tool | import SCons.Tool | |||
import SCons.Tool.msvc | import SCons.Tool.msvc | |||
import SCons.Tool.msvs | import SCons.Tool.msvs | |||
import SCons.Util | import SCons.Util | |||
from .MSCommon import msvc_setup_env_once, msvc_exists | from .MSCommon import msvc_setup_env_once, msvc_setup_env_tool | |||
from .MSCommon.common import get_pch_node | from .MSCommon.common import get_pch_node | |||
tool_name = 'mslink' | ||||
def pdbGenerator(env, target, source, for_signature): | def pdbGenerator(env, target, source, for_signature): | |||
try: | try: | |||
return ['/PDB:%s' % target[0].attributes.pdb, '/DEBUG'] | return ['/PDB:%s' % target[0].attributes.pdb, '/DEBUG'] | |||
except (AttributeError, IndexError): | except (AttributeError, IndexError): | |||
return None | return None | |||
def _dllTargets(target, source, env, for_signature, paramtp): | def _dllTargets(target, source, env, for_signature, paramtp): | |||
listCmd = [] | listCmd = [] | |||
dll = env.FindIxes(target, '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp) | dll = env.FindIxes(target, '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp) | |||
if dll: listCmd.append("/out:%s"%dll.get_string(for_signature)) | if dll: listCmd.append("/out:%s"%dll.get_string(for_signature)) | |||
skipping to change at line 310 | skipping to change at line 312 | |||
env['MTFLAGS'] = SCons.Util.CLVar('/nologo') | env['MTFLAGS'] = SCons.Util.CLVar('/nologo') | |||
# Note: use - here to prevent build failure if no manifest produced. | # Note: use - here to prevent build failure if no manifest produced. | |||
# This seems much simpler than a fancy system using a function action to see | # This seems much simpler than a fancy system using a function action to see | |||
# if the manifest actually exists before trying to run mt with it. | # if the manifest actually exists before trying to run mt with it. | |||
env['MTEXECOM'] = '-$MT $MTFLAGS -manifest ${TARGET}.manifest $_MANIFEST_SOU RCES -outputresource:$TARGET;1' | env['MTEXECOM'] = '-$MT $MTFLAGS -manifest ${TARGET}.manifest $_MANIFEST_SOU RCES -outputresource:$TARGET;1' | |||
env['MTSHLIBCOM'] = '-$MT $MTFLAGS -manifest ${TARGET}.manifest $_MANIFEST_S OURCES -outputresource:$TARGET;2' | env['MTSHLIBCOM'] = '-$MT $MTFLAGS -manifest ${TARGET}.manifest $_MANIFEST_S OURCES -outputresource:$TARGET;2' | |||
# TODO Future work garyo 27-Feb-11 | # TODO Future work garyo 27-Feb-11 | |||
env['_MANIFEST_SOURCES'] = None # _windowsManifestSources | env['_MANIFEST_SOURCES'] = None # _windowsManifestSources | |||
# Set-up ms tools paths | # Set-up ms tools paths | |||
msvc_setup_env_once(env) | msvc_setup_env_once(env, tool=tool_name) | |||
# Loadable modules are on Windows the same as shared libraries, but they | # Loadable modules are on Windows the same as shared libraries, but they | |||
# are subject to different build parameters (LDMODULE* variables). | # are subject to different build parameters (LDMODULE* variables). | |||
# Therefore LDMODULE* variables correspond as much as possible to | # Therefore LDMODULE* variables correspond as much as possible to | |||
# SHLINK*/SHLIB* ones. | # SHLINK*/SHLIB* ones. | |||
SCons.Tool.createLoadableModuleBuilder(env, loadable_module_suffix='$LDMODUL ESUFFIX') | SCons.Tool.createLoadableModuleBuilder(env, loadable_module_suffix='$LDMODUL ESUFFIX') | |||
env['LDMODULE'] = '$SHLINK' | env['LDMODULE'] = '$SHLINK' | |||
env['LDMODULEPREFIX'] = '$SHLIBPREFIX' | env['LDMODULEPREFIX'] = '$SHLIBPREFIX' | |||
env['LDMODULESUFFIX'] = '$SHLIBSUFFIX' | env['LDMODULESUFFIX'] = '$SHLIBSUFFIX' | |||
env['LDMODULEFLAGS'] = '$SHLINKFLAGS' | env['LDMODULEFLAGS'] = '$SHLINKFLAGS' | |||
skipping to change at line 333 | skipping to change at line 335 | |||
env['LDMODULEEMITTER'] = [ldmodEmitter] | env['LDMODULEEMITTER'] = [ldmodEmitter] | |||
env['LDMODULECOM'] = compositeLdmodAction | env['LDMODULECOM'] = compositeLdmodAction | |||
# Issue #3350 | # Issue #3350 | |||
# Change tempfile argument joining character from a space to a newline | # Change tempfile argument joining character from a space to a newline | |||
# mslink will fail if any single line is too long, but is fine with many lin es | # mslink will fail if any single line is too long, but is fine with many lin es | |||
# in a tempfile | # in a tempfile | |||
env['TEMPFILEARGJOIN'] = os.linesep | env['TEMPFILEARGJOIN'] = os.linesep | |||
def exists(env): | def exists(env): | |||
return msvc_exists(env) | return msvc_setup_env_tool(env, tool=tool_name) | |||
# Local Variables: | # Local Variables: | |||
# tab-width:4 | # tab-width:4 | |||
# indent-tabs-mode:nil | # indent-tabs-mode:nil | |||
# End: | # End: | |||
# vim: set expandtab tabstop=4 shiftwidth=4: | # vim: set expandtab tabstop=4 shiftwidth=4: | |||
End of changes. 4 change blocks. | ||||
3 lines changed or deleted | 5 lines changed or added |