|
|
|
@ -233,14 +233,6 @@ class Makefile:
|
|
|
|
|
if not hasattr(configuration, "qt_version"):
|
|
|
|
|
error("The target uses Qt but pyqtconfig has not been imported.")
|
|
|
|
|
|
|
|
|
|
# For Qt v4 interpret Qt support as meaning link against the core
|
|
|
|
|
# and GUI libraries (which corresponds to the default qmake
|
|
|
|
|
# configuration). Also allow a list of Qt v4 modules to be
|
|
|
|
|
# specified.
|
|
|
|
|
if configuration.qt_version >= 0x040000:
|
|
|
|
|
if type(qt) != list:
|
|
|
|
|
qt = ["QtCore", "QtGui"]
|
|
|
|
|
|
|
|
|
|
self._threaded = configuration.qt_threaded
|
|
|
|
|
else:
|
|
|
|
|
self._threaded = threaded
|
|
|
|
@ -396,8 +388,7 @@ class Makefile:
|
|
|
|
|
lflags.lextend(mac_lflags)
|
|
|
|
|
|
|
|
|
|
# Don't use a unique list as libraries may need to be searched more
|
|
|
|
|
# than once. Also MacOS/X uses the form "-framework lib" so we don't
|
|
|
|
|
# want to lose the multiple "-framework".
|
|
|
|
|
# than once.
|
|
|
|
|
libs = []
|
|
|
|
|
|
|
|
|
|
for l in self.extra_libs:
|
|
|
|
@ -538,36 +529,7 @@ class Makefile:
|
|
|
|
|
if not self._debug:
|
|
|
|
|
defines.append("QT_NO_DEBUG")
|
|
|
|
|
|
|
|
|
|
if self.config.qt_version >= 0x040000:
|
|
|
|
|
for mod in self._qt:
|
|
|
|
|
# Note that qmake doesn't define anything for QtHelp.
|
|
|
|
|
if mod == "QtCore":
|
|
|
|
|
defines.append("QT_CORE_LIB")
|
|
|
|
|
elif mod == "QtGui":
|
|
|
|
|
defines.append("QT_GUI_LIB")
|
|
|
|
|
elif mod == "QtMultimedia":
|
|
|
|
|
defines.append("QT_MULTIMEDIA_LIB")
|
|
|
|
|
elif mod == "QtNetwork":
|
|
|
|
|
defines.append("QT_NETWORK_LIB")
|
|
|
|
|
elif mod == "QtOpenGL":
|
|
|
|
|
defines.append("QT_OPENGL_LIB")
|
|
|
|
|
elif mod == "QtScript":
|
|
|
|
|
defines.append("QT_SCRIPT_LIB")
|
|
|
|
|
elif mod == "QtScriptTools":
|
|
|
|
|
defines.append("QT_SCRIPTTOOLS_LIB")
|
|
|
|
|
elif mod == "QtSql":
|
|
|
|
|
defines.append("QT_SQL_LIB")
|
|
|
|
|
elif mod == "QtTest":
|
|
|
|
|
defines.append("QT_TEST_LIB")
|
|
|
|
|
elif mod == "QtWebKit":
|
|
|
|
|
defines.append("QT_WEBKIT_LIB")
|
|
|
|
|
elif mod == "QtXml":
|
|
|
|
|
defines.append("QT_XML_LIB")
|
|
|
|
|
elif mod == "QtXmlPatterns":
|
|
|
|
|
defines.append("QT_XMLPATTERNS_LIB")
|
|
|
|
|
elif mod == "phonon":
|
|
|
|
|
defines.append("QT_PHONON_LIB")
|
|
|
|
|
elif self._threaded:
|
|
|
|
|
if self._threaded:
|
|
|
|
|
defines.append("QT_THREAD_SUPPORT")
|
|
|
|
|
|
|
|
|
|
# Handle library directories.
|
|
|
|
@ -575,95 +537,17 @@ class Makefile:
|
|
|
|
|
libdir.extend(libdir_qt)
|
|
|
|
|
rpaths.extend(libdir_qt)
|
|
|
|
|
|
|
|
|
|
if self.config.qt_version >= 0x040000:
|
|
|
|
|
# For Windows: the macros that define the dependencies on
|
|
|
|
|
# Windows libraries.
|
|
|
|
|
wdepmap = {
|
|
|
|
|
"QtCore": "LIBS_CORE",
|
|
|
|
|
"QtGui": "LIBS_GUI",
|
|
|
|
|
"QtNetwork": "LIBS_NETWORK",
|
|
|
|
|
"QtOpenGL": "LIBS_OPENGL",
|
|
|
|
|
"QtWebKit": "LIBS_WEBKIT"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# For Windows: the dependencies between Qt libraries.
|
|
|
|
|
qdepmap = {
|
|
|
|
|
"QtAssistant": ("QtNetwork", "QtGui", "QtCore"),
|
|
|
|
|
"QtGui": ("QtCore", ),
|
|
|
|
|
"QtHelp": ("QtSql", "QtGui", "QtCore"),
|
|
|
|
|
"QtMultimedia": ("QtGui", "QtCore"),
|
|
|
|
|
"QtNetwork": ("QtCore", ),
|
|
|
|
|
"QtOpenGL": ("QtGui", "QtCore"),
|
|
|
|
|
"QtScript": ("QtCore", ),
|
|
|
|
|
"QtScriptTools": ("QtScript", "QtGui", "QtCore"),
|
|
|
|
|
"QtSql": ("QtCore", ),
|
|
|
|
|
"QtSvg": ("QtXml", "QtGui", "QtCore"),
|
|
|
|
|
"QtTest": ("QtGui", "QtCore"),
|
|
|
|
|
"QtWebKit": ("QtNetwork", "QtGui", "QtCore"),
|
|
|
|
|
"QtXml": ("QtCore", ),
|
|
|
|
|
"QtXmlPatterns": ("QtNetwork", "QtCore"),
|
|
|
|
|
"phonon": ("QtGui", "QtCore"),
|
|
|
|
|
"QtDesigner": ("QtGui", "QtCore"),
|
|
|
|
|
"QAxContainer": ("QtGui", "QtCore")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# The QtSql .prl file doesn't include QtGui as a dependency (at
|
|
|
|
|
# least on Linux) so we explcitly set the dependency here for
|
|
|
|
|
# everything.
|
|
|
|
|
if "QtSql" in self._qt:
|
|
|
|
|
if "QtGui" not in self._qt:
|
|
|
|
|
self._qt.append("QtGui")
|
|
|
|
|
|
|
|
|
|
# With Qt v4.2.0, the QtAssistantClient library is now a shared
|
|
|
|
|
# library on UNIX. The QtAssistantClient .prl file doesn't
|
|
|
|
|
# include QtGui and QtNetwork as a dependency any longer. This
|
|
|
|
|
# seems to be a bug in Qt v4.2.0. We explicitly set the
|
|
|
|
|
# dependencies here.
|
|
|
|
|
if self.config.qt_version >= 0x040200 and "QtAssistant" in self._qt:
|
|
|
|
|
if "QtGui" not in self._qt:
|
|
|
|
|
self._qt.append("QtGui")
|
|
|
|
|
if "QtNetwork" not in self._qt:
|
|
|
|
|
self._qt.append("QtNetwork")
|
|
|
|
|
|
|
|
|
|
for mod in self._qt:
|
|
|
|
|
lib = self._qt4_module_to_lib(mod)
|
|
|
|
|
libs.append(self.platform_lib(lib, self._is_framework(mod)))
|
|
|
|
|
|
|
|
|
|
if sys.platform == "win32":
|
|
|
|
|
# On Windows the dependent libraries seem to be in
|
|
|
|
|
# qmake.conf rather than the .prl file and the
|
|
|
|
|
# inter-dependencies between Qt libraries don't seem to
|
|
|
|
|
# be anywhere.
|
|
|
|
|
deps = _UniqueList()
|
|
|
|
|
|
|
|
|
|
if mod in list(wdepmap.keys()):
|
|
|
|
|
deps.extend(self.optional_list(wdepmap[mod]))
|
|
|
|
|
|
|
|
|
|
if mod in list(qdepmap.keys()):
|
|
|
|
|
for qdep in qdepmap[mod]:
|
|
|
|
|
# Ignore the dependency if it is explicitly
|
|
|
|
|
# linked.
|
|
|
|
|
if qdep not in self._qt:
|
|
|
|
|
libs.append(self.platform_lib(self._qt4_module_to_lib(qdep)))
|
|
|
|
|
|
|
|
|
|
if qdep in list(wdepmap.keys()):
|
|
|
|
|
deps.extend(self.optional_list(wdepmap[qdep]))
|
|
|
|
|
|
|
|
|
|
libs.extend(deps.as_list())
|
|
|
|
|
else:
|
|
|
|
|
libs.extend(self._dependent_libs(lib, self._is_framework(mod)))
|
|
|
|
|
else:
|
|
|
|
|
# Windows needs the version number appended if Qt is a DLL.
|
|
|
|
|
qt_lib = self.config.qt_lib
|
|
|
|
|
# Windows needs the version number appended if Qt is a DLL.
|
|
|
|
|
qt_lib = self.config.qt_lib
|
|
|
|
|
|
|
|
|
|
if self.generator in ("MSVC", "MSVC.NET", "BMAKE") and win_shared:
|
|
|
|
|
qt_lib = qt_lib + version_to_string(self.config.qt_version).replace(".", "")
|
|
|
|
|
if self.generator in ("MSVC", "MSVC.NET", "BMAKE") and win_shared:
|
|
|
|
|
qt_lib = qt_lib + version_to_string(self.config.qt_version).replace(".", "")
|
|
|
|
|
|
|
|
|
|
if self.config.qt_edition == "non-commercial":
|
|
|
|
|
qt_lib = qt_lib + "nc"
|
|
|
|
|
if self.config.qt_edition == "non-commercial":
|
|
|
|
|
qt_lib = qt_lib + "nc"
|
|
|
|
|
|
|
|
|
|
libs.append(self.platform_lib(qt_lib, self.config.qt_framework))
|
|
|
|
|
libs.extend(self._dependent_libs(self.config.qt_lib))
|
|
|
|
|
libs.append(self.platform_lib(qt_lib))
|
|
|
|
|
libs.extend(self._dependent_libs(self.config.qt_lib))
|
|
|
|
|
|
|
|
|
|
# Handle header directories.
|
|
|
|
|
try:
|
|
|
|
@ -681,18 +565,6 @@ class Makefile:
|
|
|
|
|
qtincdir = self.optional_list("INCDIR_QT")
|
|
|
|
|
|
|
|
|
|
if qtincdir:
|
|
|
|
|
if self.config.qt_version >= 0x040000:
|
|
|
|
|
for mod in self._qt:
|
|
|
|
|
if mod == "QAxContainer":
|
|
|
|
|
incdir.append(os.path.join(qtincdir[0], "ActiveQt"))
|
|
|
|
|
elif self._is_framework(mod):
|
|
|
|
|
if mod == "QtAssistant" and self.config.qt_version < 0x040202:
|
|
|
|
|
mod = "QtAssistantClient"
|
|
|
|
|
|
|
|
|
|
incdir.append(os.path.join(libdir_qt[0], mod + ".framework", "Headers"))
|
|
|
|
|
else:
|
|
|
|
|
incdir.append(os.path.join(qtincdir[0], mod))
|
|
|
|
|
|
|
|
|
|
# This must go after the module include directories.
|
|
|
|
|
incdir.extend(qtincdir)
|
|
|
|
|
|
|
|
|
@ -703,10 +575,9 @@ class Makefile:
|
|
|
|
|
libs.extend(self.optional_list("LIBS_OPENGL"))
|
|
|
|
|
|
|
|
|
|
if self._qt or self._opengl:
|
|
|
|
|
if self.config.qt_version < 0x040000 or self._opengl or "QtGui" in self._qt:
|
|
|
|
|
incdir.extend(self.optional_list("INCDIR_X11"))
|
|
|
|
|
libdir.extend(self.optional_list("LIBDIR_X11"))
|
|
|
|
|
libs.extend(self.optional_list("LIBS_X11"))
|
|
|
|
|
incdir.extend(self.optional_list("INCDIR_X11"))
|
|
|
|
|
libdir.extend(self.optional_list("LIBDIR_X11"))
|
|
|
|
|
libs.extend(self.optional_list("LIBS_X11"))
|
|
|
|
|
|
|
|
|
|
if self._threaded:
|
|
|
|
|
libs.extend(self.optional_list("LIBS_THREAD"))
|
|
|
|
@ -742,40 +613,6 @@ class Makefile:
|
|
|
|
|
self.LFLAGS.append("/MANIFEST")
|
|
|
|
|
self.LFLAGS.append("/MANIFESTFILE:%s.manifest" % target)
|
|
|
|
|
|
|
|
|
|
def _is_framework(self, mod):
|
|
|
|
|
"""Return true if the given Qt module is a framework.
|
|
|
|
|
"""
|
|
|
|
|
return (self.config.qt_framework and (self.config.qt_version >= 0x040200 or mod != "QtAssistant"))
|
|
|
|
|
|
|
|
|
|
def _qt4_module_to_lib(self, mname):
|
|
|
|
|
"""Return the name of the Qt4 library corresponding to a module.
|
|
|
|
|
|
|
|
|
|
mname is the name of the module.
|
|
|
|
|
"""
|
|
|
|
|
if mname == "QtAssistant":
|
|
|
|
|
if self.config.qt_version >= 0x040202 and sys.platform == "darwin":
|
|
|
|
|
lib = mname
|
|
|
|
|
else:
|
|
|
|
|
lib = "QtAssistantClient"
|
|
|
|
|
else:
|
|
|
|
|
lib = mname
|
|
|
|
|
|
|
|
|
|
if self._debug:
|
|
|
|
|
if sys.platform == "win32":
|
|
|
|
|
lib = lib + "d"
|
|
|
|
|
elif self.config.qt_version < 0x040200 or sys.platform == "darwin":
|
|
|
|
|
lib = lib + "_debug"
|
|
|
|
|
|
|
|
|
|
if sys.platform == "win32" and "shared" in self.config.qt_winconfig.split():
|
|
|
|
|
if (mname in ("QtCore", "QtDesigner", "QtGui", "QtHelp",
|
|
|
|
|
"QtMultimedia", "QtNetwork", "QtOpenGL", "QtScript",
|
|
|
|
|
"QtScriptTools", "QtSql", "QtSvg", "QtTest",
|
|
|
|
|
"QtWebKit", "QtXml", "QtXmlPatterns", "phonon") or
|
|
|
|
|
(self.config.qt_version >= 0x040200 and mname == "QtAssistant")):
|
|
|
|
|
lib = lib + "4"
|
|
|
|
|
|
|
|
|
|
return lib
|
|
|
|
|
|
|
|
|
|
def optional_list(self, name):
|
|
|
|
|
"""Return an optional Makefile macro as a list.
|
|
|
|
|
|
|
|
|
@ -822,34 +659,28 @@ class Makefile:
|
|
|
|
|
|
|
|
|
|
return flags
|
|
|
|
|
|
|
|
|
|
def platform_lib(self, clib, framework=0):
|
|
|
|
|
def platform_lib(self, clib):
|
|
|
|
|
"""Return a library name in platform specific form.
|
|
|
|
|
|
|
|
|
|
clib is the library name in cannonical form.
|
|
|
|
|
framework is set of the library is implemented as a MacOS framework.
|
|
|
|
|
"""
|
|
|
|
|
if self.generator in ("MSVC", "MSVC.NET", "BMAKE"):
|
|
|
|
|
plib = clib + ".lib"
|
|
|
|
|
elif sys.platform == "darwin" and framework:
|
|
|
|
|
plib = "-framework " + clib
|
|
|
|
|
else:
|
|
|
|
|
plib = "-l" + clib
|
|
|
|
|
|
|
|
|
|
return plib
|
|
|
|
|
|
|
|
|
|
def _dependent_libs(self, clib, framework=0):
|
|
|
|
|
def _dependent_libs(self, clib):
|
|
|
|
|
"""Return a list of additional libraries (in platform specific form)
|
|
|
|
|
that must be linked with a library.
|
|
|
|
|
|
|
|
|
|
clib is the library name in cannonical form.
|
|
|
|
|
framework is set of the library is implemented as a MacOS framework.
|
|
|
|
|
"""
|
|
|
|
|
prl_libs = []
|
|
|
|
|
|
|
|
|
|
if self.generator in ("MSVC", "MSVC.NET", "BMAKE"):
|
|
|
|
|
prl_name = os.path.join(self.config.qt_lib_dir, clib + ".prl")
|
|
|
|
|
elif sys.platform == "darwin" and framework:
|
|
|
|
|
prl_name = os.path.join(self.config.qt_lib_dir, clib + ".framework", clib + ".prl")
|
|
|
|
|
else:
|
|
|
|
|
prl_name = os.path.join(self.config.qt_lib_dir, "lib" + clib + ".prl")
|
|
|
|
|
|
|
|
|
@ -1043,11 +874,6 @@ class Makefile:
|
|
|
|
|
libdir_prefix = "-L"
|
|
|
|
|
|
|
|
|
|
for ld in self.optional_list("LIBDIR"):
|
|
|
|
|
if sys.platform == "darwin" and self.config.qt_framework:
|
|
|
|
|
fflag = "-F" + _quote(ld)
|
|
|
|
|
libs.append(fflag)
|
|
|
|
|
cppflags.append(fflag)
|
|
|
|
|
|
|
|
|
|
libs.append(libdir_prefix + _quote(ld))
|
|
|
|
|
|
|
|
|
|
libs.extend(self.optional_list("LIBS"))
|
|
|
|
@ -1749,9 +1575,6 @@ class ProgramMakefile(Makefile):
|
|
|
|
|
libdir_prefix = "-L"
|
|
|
|
|
|
|
|
|
|
for ld in self.optional_list("LIBDIR"):
|
|
|
|
|
if sys.platform == "darwin" and self.config.qt_framework:
|
|
|
|
|
build.append("-F" + _quote(ld))
|
|
|
|
|
|
|
|
|
|
build.append(libdir_prefix + _quote(ld))
|
|
|
|
|
|
|
|
|
|
lflags = self.optional_list("LFLAGS")
|
|
|
|
|