diff options
Diffstat (limited to 'SConstruct')
| -rw-r--r-- | SConstruct | 713 |
1 files changed, 0 insertions, 713 deletions
diff --git a/SConstruct b/SConstruct deleted file mode 100644 index d0528b95..00000000 --- a/SConstruct +++ /dev/null @@ -1,713 +0,0 @@ -import distutils.sysconfig -import os -import re -import sys - -def setup_config_variables(): - """ Set up defaults values and load the configuration settings """ - # Take a sensible default for pythonpath - must_be_specified = 'Must be specified ***' - - boostpath = must_be_specified - if 'BOOSTPATH' in os.environ: - boostpath = os.environ['BOOSTPATH'] - - lootpath = must_be_specified - if 'LOOTPATH' in os.environ: - lootpath = os.environ['LOOTPATH'] - - pythonpath = must_be_specified - if 'PYTHONPATH' in os.environ: - pythonpath = os.environ['PYTHONPATH'] - else: - pythonpath = distutils.sysconfig.EXEC_PREFIX - - # Take qtdir from the os environment if set - qtdir = must_be_specified - if 'QTDIR' in os.environ: - qtdir = os.environ['QTDIR'] - elif 'QT4DIR' in os.environ: - qtdir = os.environ['QT4DIR'] - - sevenzippath = must_be_specified - if 'SEVENZIPPATH' in os.environ: - sevenzippath = os.environ['SEVENZIPPATH'] - - zlibpath = must_be_specified - if 'ZLIBPATH' in os.environ: - zlibpath = os.environ['ZLIBPATH'] - - git = 'git' - if 'GIT' in os.environ: - git = os.environ['GIT'] - - mercurial = 'hg' - if 'MERCURIAL' in os.environ: - hg = os.environ['HG'] - - vars = Variables('scons_configure.py') - vars.AddVariables( - PathVariable('BOOSTPATH', 'Set to point to your boost directory', - boostpath, PathVariable.PathIsDir), - PathVariable('LOOTPATH', 'Set to point to your LOOT API directory', - lootpath, PathVariable.PathIsDir), - ('MSVC_VERSION', 'Version of msvc, defaults to latest installed'), - PathVariable('PYTHONPATH', 'Path to python install', pythonpath, - PathVariable.PathIsDir), - PathVariable('QTDIR', 'Path to the version of QT to use', qtdir, - PathVariable.PathIsDir), - PathVariable('SEVENZIPPATH', 'Path to 7zip sources', sevenzippath, - PathVariable.PathIsDir), - PathVariable('ZLIBPATH', 'Path to zlib install', zlibpath, - PathVariable.PathIsDir), - PathVariable('GIT', 'Path to git executable', git, - PathVariable.PathIsFile), - PathVariable('MERCURIAL', 'Path to hg executable', mercurial, - PathVariable.PathIsFile), - PathVariable('IWYU', 'Path to include-what-you-use executable', None, - PathVariable.PathIsFile) - ) - - return vars - -def add_moc_files(self, files): - """ - The QT4 tool only sets up moc for .cpp files. If there's a header file - with no corresponding source we have to do it ourselves. This makes it - easier. - Note: I could just supress the scanning and moc all the HEADER files... - """ - targets = [] - for file in self.Flatten([files]): - contents = file.get_contents() - target = str(file)[:-1] + 'cpp' - if not os.path.exists(target): - if 'Q_OBJECT' in file.get_contents(): - header = file.name - target = self['QT5_XMOCHPREFIX'] + header[:-2] + \ - self['QT5_XMOCHSUFFIX'] - targets.append(self.ExplicitMoc5(target, header)) - return targets - -def link_emitter_wrapper(target, source, env): - # This could be better written! - if '/DEBUG' in env['LINKFLAGS']: - name = str(target[0])[:-3] + 'pdb' - target.append(name) - return (target, source) - -def shlib_emitter_wrapper(target, source, env): - if 'WINDOWS_EMBED_MANIFEST' in env: - env.AppendUnique(LINKFLAGS = '/MANIFEST') - return link_emitter_wrapper(target, source, env) - -def fixup_qt4(): - import SCons.Tool - oldpath = sys.path - sys.path = SCons.Tool.DefaultToolpath + sys.path - import qt4 - def my_qrc_path(head, prefix, tail, suffix): - return "%s%s%s" % (prefix, tail, suffix) - qt4.__qrc_path = my_qrc_path - sys.path = oldpath - -metadata = re.compile(r'Q_PLUGIN_METADATA\(IID *".*" *FILE *"(.*)"\)') - -def json_emitter(target, source, env): - depends = [] - for s in source: - match = metadata.search(s.get_contents()) - if match: - depends += [ match.group(1) ] - env.Depends(target, depends) - return target, source - -def fixup_qt5(): - import SCons.Tool - oldpath = sys.path - sys.path = SCons.Tool.DefaultToolpath + sys.path - import qt5 - def my_qrc_path(head, prefix, tail, suffix): - return "%s%s%s" % (prefix, tail, suffix) - qt5.__qrc_path = my_qrc_path - sys.path = oldpath - - qt_env['BUILDERS']['Moc5'].builder.emitter = json_emitter - -moduleDefines = { - '3Support' : [ 'QT_QT3SUPPORT_LIB', 'QT3_SUPPORT' ], - 'Core' : [ 'QT_CORE_LIB' ], - 'Declarative' : [ 'QT_DECLARATIVE_LIB' ], - 'Gui' : [ 'QT_GUI_LIB' ], - 'Network' : [ 'QT_NETWORK_LIB' ], - 'OpenGL' : [ 'QT_OPENGL_LIB' ], - 'Script' : [ 'QT_SCRIPT_LIB' ], - 'Sql' : [ 'QT_SQL_LIB' ], - 'Svg' : [ 'QT_SVG_LIB' ], - 'WebKit' : [ 'QT_WEBKIT_LIB' ], - 'Xml' : [ 'QT_XML_LIB' ], - 'XmlPatterns' : [ 'QT_XMLPATTERNS_LIB' ], -# qt5 - 'Qml' : [ 'QT_QML_LIB' ], - 'QuickWidgets' : [ 'QT_QUICKWIDGETS_LIB', 'QT_WIDGETS_LIB', 'QT_QUICK_LIB' ], - 'Widgets' : [ 'QT_WIDGETS_LIB' ], - 'WebKitWidgets' : [ 'QT_WEBKITWIDGETS_LIB' ], - 'WinExtras' : [ 'QT_WINEXTRAS_LIB' ] -} - -staticModules = [ - 'UiTools', -] - -def get_qt_lib_info(env): - " Deal with the various QT naming conventions. sigh " - - # For QT4, the libraries are QTlibname{,d}4 - # For QT5, they are QT5libname{,d} - - prefix = 'QT' - suffix = 'd' if env['CONFIG'] == 'debug' else '' - - _suffix = suffix # Because they can't be consistent within a version, - # let alone between - version = env['QT_MAJOR_VERSION'] - if version <= 4: - suffix += str(version) - else: - prefix += str(version) - return prefix, suffix, _suffix - -def EnableQtModules(self, *modules): - """ Enable the specified QT modules, mainly by adding defines - and libraries - """ - self.AppendUnique(QT_USED_MODULES = modules) - for module in modules: - try: - self.AppendUnique(CPPDEFINES = moduleDefines[module]) - if self['CONFIG'] == 'debug': - if module == 'Declarative': - self.AppendUnique(CPPDEFINES = 'QT_DECLARATIVE_DEBUG') - elif module == 'Qml': - self.AppendUnique(CPPDEFINES = 'QT_QML_DEBUG') - except: - print 'module', module, 'has no -D' - pass - - if "Assistant" in modules: - self.AppendUnique(CPPPATH = [ - os.path.join('$QTDIR', 'include', 'QtAssistant') - ]) - modules.remove('Assistant') - modules.append('AssistantClient') - - prefix, suffix, _suffix = get_qt_lib_info(self) - self.AppendUnique(LIBS = [ - prefix + lib + suffix for lib in modules if lib not in staticModules - ]) - - self.PrependUnique(LIBS = [ - lib + _suffix for lib in modules if lib in staticModules - ]) - - if 'OpenGL' in modules: - self.AppendUnique(LIBS = [ 'opengl32' ]) - - self.AppendUnique(CPPPATH = [ - os.path.join('$QTDIR', 'include', 'QT' + module) for module in modules - ]) - -def DisableQtModules(self, *modules): - """ Disable the specified QT modules similar to enabling them """ - for module in modules: - try: - self['QT_USED_MODULES'].remove(module) - self['CPPDEFINES'].remove(moduleDefines[module]) - if self['CONFIG'] == 'debug' and module == 'Declarative': - self['CPPDEFINES'].remove('QT_DECLARATIVE_DEBUG') - except: - pass - - - if "Assistant" in modules: - self['CPPPATH'].remove(os.path.join('$QTDIR', 'include', 'QtAssistant')) - modules.remove('Assistant') - modules.append('AssistantClient') - - prefix, suffix, _suffix = get_qt_lib_info(self) - - for lib in modules: - self['LIBS'].remove(prefix + lib + suffix) - - if 'OpenGL' in modules: - self['LIBS'].remove('opengl32') - - for module in modules: - self['CPPPATH'].remove(os.path.join('$QTDIR', 'include', 'QT' + module)) - -def setup_IWYU(env): - import SCons.Defaults - import SCons.Builder - original_shared = SCons.Defaults.SharedObjectEmitter - original_static = SCons.Defaults.StaticObjectEmitter - - def DoIWYU(env, source, target): - for i in range(len(source)): - s = source[i] - dir, name = os.path.split(str(s)) # I'm sure theres a way of getting this from scons - # Don't bother looking at moc files and 7zip source - if not name.startswith('moc_') and \ - not dir.startswith(env['SEVENZIPPATH']): - # Put the .iwyu in the same place as the .obj - targ = os.path.splitext(str(target[i]))[0] - env.Depends(env.IWYU(targ + '.iwyu', s), target[i]) - - def shared_emitter(target, source, env): - DoIWYU(env, source, target) - return original_shared(target, source, env) - - def static_emitter(target, source, env): - DoIWYU(env, source, target) - return original_static(target, source, env) - - SCons.Defaults.SharedObjectEmitter = shared_emitter - SCons.Defaults.StaticObjectEmitter = static_emitter - - def emitter(target, source, env): - env.Depends(target, env['IWYU_MAPPING_FILE']) - env.Depends(target, env['IWYU_MASSAGE']) - return target, source - - def _concat_list(prefixes, list, suffixes, env, f=lambda x: x, target=None, source=None): - """ Creates a new list from 'list' by first interpolating each element - in the list using the 'env' dictionary and then calling f on the - list, and concatenate the 'prefix' and 'suffix' LISTS onto each element of the list. - A trailing space on the last element of 'prefix' or leading space on the - first element of 'suffix' will cause them to be put into separate list - elements rather than being concatenated. - """ - - if not list: - return list - - l = f(SCons.PathList.PathList(list).subst_path(env, target, source)) - if l is not None: - list = l - - # This bit replaces current concat_ixes - - result = [] - - def process_stringlist(s): - return [ str(env.subst(p, SCons.Subst.SUBST_RAW)) - for p in Flatten([s]) if p != '' ] - - # ensure that prefix and suffix are strings - prefixes = process_stringlist(prefixes) - prefix = '' - if len(prefixes) != 0: - if prefixes[-1][-1] != ' ': - prefix = prefixes.pop() - - suffixes = process_stringlist(suffixes) - suffix = '' - if len(suffixes) != 0: - if suffixes[-1][0] != ' ': - suffix = suffixes.pop(0) - - for x in list: - if isinstance(x, SCons.Node.FS.File): - result.append(x) - continue - x = str(x) - if x: - result.append(prefixes) - if prefix: - if x[:len(prefix)] != prefix: - x = prefix + x - result.append(x) - if suffix: - if x[-len(suffix):] != suffix: - result[-1] = result[-1] + suffix - result.append(suffixes) - return result - - env['_concat_list'] = _concat_list - # Note to self: command 2>&1 | other command appears to work as I would hope - # except it eats errors - iwyu = SCons.Builder.Builder( - action=[ - '$IWYU_MASSAGE $TARGET $IWYU $IWYU_FLAGS $IWYU_MAPPINGS $IWYU_COMCOM $SOURCE' - ], - emitter=emitter, - suffix='.iwyu', - src_suffix='.cpp') - - env.Append(BUILDERS={'IWYU': iwyu}) - - # Sigh - IWYU is a right bum as it doesn't recognise /I so I have to - # duplicate most of the usual stuff - - env['IWYU_FLAGS'] = [ - # This might turn down the output a bit. I hope - '-Xiwyu', '--transitive_includes_only', - # Seem to be needed for a windows build - '-D_MT', '-D_DLL', '-m32', - # This is something to do with clang, windows and boost headers - '-DBOOST_USE_WINDOWS_H', - # There's a lot of this, disabled for now - '-Wno-inconsistent-missing-override', - # Mark boost and Qt headers as system headers to disable a lot of noise. - # I'm sure there has to be a better way than saying 'prefix=Q' - '--system-header-prefix=Q', - '--system-header-prefix=boost/', - # Should be able to get this info from our setup really - '-fmsc-version=1800', '-D_MSC_VER=1800', - # clang and qt don't agree about these because clang says its gcc 4.2 - # and QT doesn't realise it's clang - '-DQ_COMPILER_INITIALIZER_LISTS', - '-DQ_COMPILER_DECLTYPE', - '-DQ_COMPILER_VARIADIC_TEMPLATES', - ] - if env['CONFIG'] == 'debug': - env['IWYU_FLAGS'] += [ '-D_DEBUG' ] - - env['IWYU_DEFPREFIX'] = '-D' - env['IWYU_DEFSUFFIX'] = '' - env['IWYU_CPPDEFFLAGS'] = '${_defines(IWYU_DEFPREFIX, CPPDEFINES, IWYU_DEFSUFFIX, __env__)}' - - env['IWYU_INCPREFIX'] = '-I' - env['IWYU_INCSUFFIX'] = '' - env['IWYU_CPPINCFLAGS'] = '$( ${_concat(IWYU_INCPREFIX, CPPPATH, IWYU_INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)' - - env['IWYU_PCH_PREFIX'] = '-include' # Amazingly this works without a space - env['IWYU_PCH_SUFFIX'] = '' - env['IWYU_PCHFILES'] = '$( ${_concat(IWYU_PCH_PREFIX, PCHSTOP, IWYU_PCH_SUFFIX, __env__, target=TARGET, source=SOURCE)} $)' - - env['IWYU_COMCOM'] = '$IWYU_CPPDEFFLAGS $IWYU_CPPINCFLAGS $IWYU_PCHFILES $CCPDBFLAGS' - env['IWYU_MAPPING_PREFIX'] = ['-Xiwyu', '--mapping_file='] - env['IWYU_MAPPING_SUFFIX'] = '' - env['IWYU_MAPPINGS'] = '$( ${_concat_list(IWYU_MAPPING_PREFIX, IWYU_MAPPING_FILE, IWYU_MAPPING_SUFFIX, __env__, f=lambda l: [ str(x) for x in l], target=TARGET, source=SOURCE)} $)' - - env['IWYU_MAPPING_FILE'] = [ - env.File('#/modorganizer/qt5_4.imp'), - env.File('#/modorganizer/win.imp'), - env.File('#/modorganizer/mappings.imp') - ] - - env['IWYU_MASSAGE'] = env.File('#/modorganizer/massage_messages.py') - -# Create base environment -vars = setup_config_variables() -env = Environment(variables = vars, TARGET_ARCH = 'x86') - -# I'd really like to validate for unexpected settings in 'variables', but scons -# appears to throw them away -#ok = True -#for key, value in vars.UnknownVariables(): -# print "unknown variable in scons_configure.py: %s=%s" % (key, value) -# ok = False -#if not ok: -# sys.exit(1) - -# Patch scons to realise it's generating PDB files if /DEBUG is set -env.AppendUnique(PROGEMITTER = [ link_emitter_wrapper ]) -# Ditto + windows_embed_manifest doesn't generate a manifest file -env.AppendUnique(SHLIBEMITTER = [ shlib_emitter_wrapper ]) - -# Work out where to find boost libraries -libdir = os.path.join(env['BOOSTPATH'], 'lib32-msvc-' + env['MSVC_VERSION']) -if not os.path.exists(libdir): - libdir = os.path.join(env['BOOSTPATH'], 'stage', 'lib') -env.AppendUnique(LIBPATH = libdir) - -# Process command line to find out what/where we're building -config = ARGUMENTS.get('CONFIG', 'debug') -env['CONFIG'] = config - -# I think this is a bug in scons. It returns 12.0 for studio 13 -# This needs to match the QT specified version or bad things will happen! -msvs_version = int(env['MSVS_VERSION'].split('.')[0]) + 2000 -if msvs_version > 2010: - msvs_version += 1 - -# Read the QT version info -with open(os.path.join(env['QTDIR'], 'mkspecs', 'qconfig.pri')) as qtinfo: - for line in qtinfo: - info = re.split(r'\s*=\s*', line.rstrip()) - if info[0] == 'QT_VERSION': - env[info[0]] = info[1] - elif '_VERSION' in info[0]: - env[info[0]] = int(info[1]) - -build_dir = 'scons-ModOrganizer-QT_%s_%sfor_MSVS%d_32bit-%s' % ( - env['QT_VERSION'].replace('.', '_'), - 'OpenGL_' if 'opengl' in env['QTDIR'] else '', - msvs_version, - config.title()) - -# Put the sconsign file somewhere sane -env.SConsignFile(os.path.join(build_dir, '.sconsign.dblite')) -env.CacheDir(os.path.join(build_dir, '.cache')) - -#this doesn't seem to work -#env.VariantDir('build/$CONFIG', 'source') -#env.VariantDir('build/$CONFIG', 'source', duplicate = 0) - -# Ripped off from qmake.conf - -# Compiler defines. Note that scons uses the same variables for C and C++ -# defines and include paths so be careful if you mix languages. - -# A note: QT puts _MSC_VER into the compile line, but I can see no earthly -# reason for this. - -env.AppendUnique(CPPDEFINES = [ - 'UNICODE', - 'WIN32', - 'NOMINMAX' # Nukes boost all over the place -]) - -# Default warning level. -env['WARNING_LEVEL'] = 3 - -# C compiler flags -env.AppendUnique(CPPFLAGS = [ - '/Zm200', - #'/Zc:wchar_t-', # 4 v 5 - '/Zc:wchar_t', - '/W$WARNING_LEVEL' -]) - -# C++ compiler flags -env.AppendUnique(CXXFLAGS = [ - '/w34100', - '/w34189', - '/EHsc', # STL on - '/GR' # RTTI on -]) - -""" -# qmake.conf -#QMAKE_CFLAGS_RELEASE = -O2 -MD -#QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi -#QMAKE_CFLAGS_LTCG = -GL -#QMAKE_CFLAGS_MP = -MP - -QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO -QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF -QMAKE_LFLAGS_LTCG = /LTCG - -# project -""" - -env['WINDOWS_EMBED_MANIFEST'] = True - - -# Seriously, the linker doesn't apply these by default? -env.AppendUnique(LINKFLAGS = [ - '/DYNAMICBASE', - '/NXCOMPAT' -]) - -# Display full path in messages. Sadly even this isn't good enough for Creator -# env.AppendUnique(CPPFLAGS = [ '/FC' ]) - -if env['CONFIG'] == 'debug': - env.AppendUnique(CPPFLAGS = [ '/MDd', '/Z7' ]) - env.AppendUnique(LINKFLAGS = [ '/DEBUG' ]) #, '/OPT:REF']) -else: - env.AppendUnique(CPPFLAGS = [ '/O2', '/MD' ]) - env.AppendUnique(LINKFLAGS = [ '/OPT:REF', '/OPT:ICF' ]) - -# Set up include what you use. Add this as an extra compile step. Note it -# doesn't currently generate an output file (use the output instead!). -if 'IWYU' in env: - setup_IWYU(env) - -# /OPT:REF removes unreferenced code -# for release, use /OPT:ICF (comdat folding: coalesce identical blocks of code) - -# We have to make the install path absolute. *sigh*. But it appears to have to -# be in build_dir... -env['INSTALL_PATH'] = os.path.join(os.getcwd(), build_dir, '_ModOrganizer') - -# Create the environment for QT -qt_env = env.Clone() - -# If you don't do this for the release build, QT gets very upset... -if qt_env['CONFIG'] != 'debug': - qt_env.AppendUnique(CPPDEFINES = [ 'QT_NO_DEBUG' ]) - -qt_env.Tool('qt%d' % qt_env['QT_MAJOR_VERSION']) - -# FIXME See if I can work out how to get official scons qt to work. Appears -# to only work with QT5 -fixup_qt5() - -qt_env.AddMethod(add_moc_files, 'AddExtraMoc') - -# A very strange rune which QT sets -qt_env['EXE_MANIFEST_DEPENDENCY'] =\ - '/MANIFESTDEPENDENCY:"' + ' '.join(("type='win32'", - "name='Microsoft.Windows.Common-Controls'", - "version='6.0.0.0'", - "publicKeyToken='6595b64144ccf1df'", - "language='*'", - "processorArchitecture='*'")) + '"' - -# Not sure how necessary this is. Moreover it says msvc but seems to expect -# the msvs number -qt_env.AppendUnique(CPPPATH = [ - os.path.join(env['QTDIR'], 'mkspecs', 'win32-msvc%d' % msvs_version) -]) - -qt_env.AddMethod(EnableQtModules) -qt_env.AddMethod(DisableQtModules) - -# This is a hack. we should redirect uic to uic4/uic5 and fix the scripts -def Uicc5(self, *args, **kwargs): - return self.Uic5(*args, **kwargs) - -qt_env.AddMethod(Uicc5, 'Uic') - -# Enable the base libraries. -qt_env.EnableQt5Modules([], debug = qt_env['CONFIG'] == 'debug') - -# Causes too many problems if you don't do this -qt_env['QT%d_MOCCPPPATH' % qt_env['QT_MAJOR_VERSION']] = '$CPPPATH' -# Yechhh. Note: the the _VER depends on ms compiler version (and could -# be dragged from the qmake conf file or preferrably from ms compiler) -qt_env['QT%d_MOCDEFINES' % qt_env['QT_MAJOR_VERSION']] =\ - '${_defines(QT5_MOCDEFPREFIX, MOCDEFINES+CPPDEFINES, QT5_MOCDEFSUFFIX, __env__)}' -qt_env['MOCDEFINES'] = [ - '_MSC_VER=1800', -] -# QTCreator appears to add these automatically. Some of these look moderately -# dangerous if you're attempting to cross-compile -# only for qt4? -if qt_env['QT_MAJOR_VERSION'] <= 4: - qt_env.AppendUnique(CPPDEFINES = [ - 'QT_DLL', - 'QT_HAVE_MMX', - 'QT_HAVE_3DNOW', - 'QT_HAVE_SSE', - 'QT_HAVE_MMXEXT', - 'QT_HAVE_SSE2', - 'QT_THREAD_SUPPORT' - ]) - -# It also adds this to the end of the include path. -# -I"c:\Apps\Qt\4.8.6\include\ActiveQt" - -# Export environment. Rename it first to encourage instant Clone() calls -Export('env qt_env') - -# And away we go -libs_to_install = env.SConscript('source/SConscript', - variant_dir = build_dir, - duplicate = 0) -libs_to_install = sorted(set(filter(lambda x: x is not None, - env.Flatten(libs_to_install)))) -# There are some odd implicit dependencies -if qt_env['QT_MAJOR_VERSION'] > 4: - libs_to_install += [ - 'Multimedia', - 'MultimediaWidgets', - 'OpenGL', - 'Positioning', - 'PrintSupport', - 'Quick', - 'Sensors', - 'WebChannel', - ] - -# Finally, set up rules to install the DLLs. -# use windeployqt.exe to install all required libraries -#SET(windeploy_parameters --no-translations --no-plugins --libdir dlls --release-with-debug-info --no-compiler-runtime) -#INSTALL( -# CODE -# "EXECUTE_PROCESS( -# COMMAND -# ${qt5bin}/windeployqt.exe ModOrganizer.exe ${windeploy_parameters} -# COMMAND -# ${qt5bin}/windeployqt.exe uibase.dll ${windeploy_parameters} -# WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/bin -# )" -#) -# this should probably be a rule though it seems to produce an awful lot of -# Stuff(TM). or a postaction - -dll_path = os.path.join('$INSTALL_PATH', 'DLLs') - -prefix, suffix, suffix_ = get_qt_lib_info(qt_env) - -dlls_to_install = [] -dlls_to_install = [ - os.path.join(env['QTDIR'], 'bin', prefix + lib + suffix + '.dll') - for lib in libs_to_install -] - -if env['CONFIG'] == 'debug': - dlls_to_install += [ - os.path.join(env['QTDIR'], 'bin', prefix + lib + suffix + '.pdb') - for lib in libs_to_install - ] - -# There is something wrong with webkit4 and/or this build as it seems -# to need to live in the same directory as mod organiser. -if 'WebKit' in libs_to_install and qt_env['QT_MAJOR_VERSION'] == 4: - libname = prefix + 'WebKit' + suffix - env.Install(env['INSTALL_PATH'], - os.path.join(env['QTDIR'], 'bin', libname + '.dll')) - if env['CONFIG'] == 'debug': - env.Install(env['INSTALL_PATH'], - os.path.join(env['QTDIR'], 'bin', libname + '.pdb')) - -if qt_env['QT_MAJOR_VERSION'] > 4: - # Guesswork a bit. - dlls_to_install += [ - os.path.join(env['QTDIR'], - 'bin', - 'icu%s%d%d.dll' % (lib, - qt_env['QT_MAJOR_VERSION'], - qt_env['QT_MINOR_VERSION'] - 1)) - for lib in ('dt','in', 'uc') - ] - - platform_dlls = [] - if env['CONFIG'] == 'debug': - platform_dlls += [ 'qwindowsd.dll', 'qwindowsd.pdb' ] - else: - platform_dlls += [ 'qwindows.dll' ] - - # Note: Appears to work fine in DLLs or at the top level, but I'm all for - # keeping the top directory a bit clean - env.Install(os.path.join(dll_path, 'platforms'), - [ os.path.join(env['QTDIR'], 'plugins', 'platforms', dll) - for dll in platform_dlls ]) - - image_dlls = [] - for image in ('dds', 'gif', 'jpeg', 'tga'): - if env['CONFIG'] == 'debug': - image_dlls += [ 'q' + image + 'd.dll', 'q' + image + 'd.pdb' ] - else: - image_dlls += [ 'q' + image + '.dll' ] - env.Install(os.path.join(dll_path, 'imageformats'), - [ os.path.join(env['QTDIR'], 'plugins', 'imageformats', dll) - for dll in image_dlls ]) - -# Build your own? -dlls_to_install += [ - os.path.join('tools', 'static_data', 'dlls', '7z.dll') -] - -env.Install(dll_path, dlls_to_install) - -# And loot which goes somewhere else (maybe this should be done in loot_cli?) -env.Install(os.path.join('${INSTALL_PATH}', 'loot'), - os.path.join('${LOOTPATH}', 'loot32.dll')) - -# also pythondll and zip, boost python dll (all for python proxy!) -# the dll we can drag from the python install -# the zip i'm not sure about. |
