* Basic System::Call support when compiling with 64-bit MinGW/GCC toolchain

* Win64 fixes


git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6607 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2015-09-17 14:30:07 +00:00
parent 757d16f937
commit 286edd20c4
41 changed files with 335 additions and 232 deletions

View file

@ -29,34 +29,30 @@ Import('BuildPlugin env')
defs = ['SYSTEM_EXPORTS']
msvc = 'msvc' in env['TOOLS'] or 'mstoolkit' in env['TOOLS']
if env['TARGET_ARCH'] != 'amd64' or msvc: # BUGBUG: Call-amd64.S is missing GAS macros
srcsuff = ''
if env['TARGET_ARCH'] != 'x86':
srcsuff = '-' + env['TARGET_ARCH']
defs += ['SYSTEM_NOCALLBACKS'] # BUGBUG: Remove this when CallBack() is implemented
if msvc: # BUGBUG: Remove this when GAS is fixed
defs += ['SYSTEM_PARTIALCALLSUPPORT']
filename = 'Call' + srcsuff
srcsuff = ''
if env['TARGET_ARCH'] != 'x86':
srcsuff = '-' + env['TARGET_ARCH']
defs += ['SYSTEM_NOCALLBACKS'] # BUGBUG: Remove this when CallBack() is implemented
defs += ['SYSTEM_PARTIALCALLSUPPORT']
filename = 'Call' + srcsuff
src_ascpp = """
#if 0 /* a C style comment */
ERROR: assembler-with-cpp required!
#else
.end
#endif
"""
conf = env.Configure()
if conf.TryCompile('END', '.S'):
files += ['Source/'+filename+'.S']
elif (not msvc) and conf.TryCompile(src_ascpp, '.S'):
files += ['Source/'+filename+'CPP.S']
elif (not msvc) and conf.TryCompile(src_ascpp, '.sx'):
files += ['Source/'+filename+'CPP.sx']
else:
print 'WARNING: System.dll: unable to find assembler for '+filename+'.S'
conf.Finish()
src_ascpp = """
#if 0 /* a C style comment */
ERROR: assembler-with-cpp required!
#else
.end
#endif
"""
conf = env.Configure()
if conf.TryCompile('END', '.S'):
files += ['Source/'+filename+'.S']
elif (not msvc) and conf.TryCompile(src_ascpp, '.S'):
files += ['Source/'+filename+'CPP.S']
elif (not msvc) and conf.TryCompile(src_ascpp, '.sx'):
files += ['Source/'+filename+'CPP.sx']
else:
print 'WARNING: System.dll: missing Win64 code, dynamic function calls not supported'
print 'WARNING: System.dll: unable to find assembler for '+filename+'.S'
conf.Finish()
BuildPlugin(
target,