Better NSIS Menu .manifest requirement detection

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6631 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2015-11-03 23:28:08 +00:00
parent 650ebca347
commit 2a341bc918
3 changed files with 24 additions and 5 deletions

View file

@ -23,6 +23,7 @@ defenv['CPP_REQUIRES_STDLIB'] = 0
defenv['SUBSYS_CON'] = '/subsystem:console'
defenv['SUBSYS_WIN'] = '/subsystem:windows'
defenv['MSVCRT_FLAG'] = '/MD'
defenv['MSVCRT_NEEDSMANIFEST'] = False
defenv['STDCALL'] = '__stdcall'
msvs_version = float(defenv['MSVS_VERSION'].replace('Exp',''))
@ -104,6 +105,24 @@ if float(defenv['MSVS_VERSION'].replace('Exp','')) < 8.0:
conf.Finish()
# Linking to msvcr?0.dll (/MD) might require a manifest
confenv = defenv.Clone()
conf = confenv.Configure()
if msvs_version >= 7.0:
conf.env.Append(CCFLAGS = [defenv['MSVCRT_FLAG']])
code = """
#include <stdlib.h>
int main() { return atoi("0"); }
"""
result = True # TryLink should not fail but default to True just in case so distribution will fail as well
if conf.TryLink(code, '.cpp'):
import os
result = os.path.exists('%s.manifest' % conf.lastTarget)
defenv['MSVCRT_NEEDSMANIFEST'] = result
conf.Finish()
### unicode
tdefenv = defenv.Clone()
if tdefenv['UNICODE']: