diff --git a/cmake/FindPyQt4.cmake b/cmake/FindPyQt4.cmake index 83cc62f6e83..b486be06aec 100644 --- a/cmake/FindPyQt4.cmake +++ b/cmake/FindPyQt4.cmake @@ -27,9 +27,9 @@ IF(EXISTS PYQT4_VERSION) SET(PYQT4_FOUND TRUE) ELSE(EXISTS PYQT4_VERSION) - FIND_FILE(_find_pyqt_py FindPyQt.py PATHS ${CMAKE_MODULE_PATH}) + FIND_FILE(_find_pyqt_py FindPyQt4.py PATHS ${CMAKE_MODULE_PATH}) - EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} --version=4 OUTPUT_VARIABLE pyqt_config) + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} OUTPUT_VARIABLE pyqt_config) IF(pyqt_config) STRING(REGEX REPLACE "^pyqt_version:([^\n]+).*$" "\\1" PYQT4_VERSION ${pyqt_config}) STRING(REGEX REPLACE ".*\npyqt_version_str:([^\n]+).*$" "\\1" PYQT4_VERSION_STR ${pyqt_config}) diff --git a/cmake/FindPyQt.py b/cmake/FindPyQt4.py similarity index 81% rename from cmake/FindPyQt.py rename to cmake/FindPyQt4.py index bd64081e153..a4fb88bba73 100644 --- a/cmake/FindPyQt.py +++ b/cmake/FindPyQt4.py @@ -30,45 +30,28 @@ # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING-CMAKE-SCRIPTS file. -import argparse - -parser = argparse.ArgumentParser(description='Find the PyQt on the system.') -parser.add_argument('--version', type=int, help='The major pyqt version to find (4 or 5, Default: 4)', default=4) - -version = parser.parse_args().version - -if version == 4: - from PyQt4 import QtCore - pyqt_sip_dir = 'PyQt4' -elif version == 5: - from PyQt5 import QtCore - pyqt_sip_dir = 'PyQt5' -else: - parser.print_help() - exit(1) - try: + import PyQt4.pyqtconfig + pyqtcfg = PyQt4.pyqtconfig.Configuration() +except ImportError: + import PyQt4.QtCore import sipconfig # won't work for SIP v5 import os.path cfg = sipconfig.Configuration() sip_dir = cfg.default_sip_dir - for p in (os.path.join(sip_dir, pyqt_sip_dir), sip_dir): + for p in (os.path.join(sip_dir, "PyQt4"), sip_dir): if os.path.exists(os.path.join(p, "QtCore", "QtCoremod.sip")): sip_dir = p break cfg = { - 'pyqt_version': QtCore.PYQT_VERSION, - 'pyqt_version_str': QtCore.PYQT_VERSION_STR, - 'pyqt_sip_flags': QtCore.PYQT_CONFIGURATION['sip_flags'], + 'pyqt_version': PyQt4.QtCore.PYQT_VERSION, + 'pyqt_version_str': PyQt4.QtCore.PYQT_VERSION_STR, + 'pyqt_sip_flags': PyQt4.QtCore.PYQT_CONFIGURATION['sip_flags'], 'pyqt_mod_dir': cfg.default_mod_dir, 'pyqt_sip_dir': sip_dir, 'pyqt_bin_dir': cfg.default_bin_dir, } pyqtcfg = sipconfig.Configuration([cfg]) -except AttributeError: - # Legacy code - import PyQt4.pyqtconfig - pyqtcfg = PyQt4.pyqtconfig.Configuration() print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version) print("pyqt_version_num:%d" % pyqtcfg.pyqt_version) diff --git a/cmake/FindPyQt5.cmake b/cmake/FindPyQt5.cmake index 1e6143c7e58..eee0b827cbe 100644 --- a/cmake/FindPyQt5.cmake +++ b/cmake/FindPyQt5.cmake @@ -27,9 +27,9 @@ IF(EXISTS PYQT5_VERSION) SET(PYQT5_FOUND TRUE) ELSE(EXISTS PYQT5_VERSION) - FIND_FILE(_find_pyqt_py FindPyQt.py PATHS ${CMAKE_MODULE_PATH}) + FIND_FILE(_find_pyqt_py FindPyQt5.py PATHS ${CMAKE_MODULE_PATH}) - EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} --version=5 OUTPUT_VARIABLE pyqt_config) + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} OUTPUT_VARIABLE pyqt_config) IF(pyqt_config) STRING(REGEX REPLACE "^pyqt_version:([^\n]+).*$" "\\1" PYQT5_VERSION ${pyqt_config}) STRING(REGEX REPLACE ".*\npyqt_version_str:([^\n]+).*$" "\\1" PYQT5_VERSION_STR ${pyqt_config}) diff --git a/cmake/FindPyQt5.py b/cmake/FindPyQt5.py new file mode 100644 index 00000000000..6fb69c7c118 --- /dev/null +++ b/cmake/FindPyQt5.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2007, Simon Edwards +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the Simon Edwards nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY Simon Edwards ''AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL Simon Edwards BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# FindPyQt.py +# Copyright (c) 2007, Simon Edwards +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +try: + import PyQt5.pyqtconfig + pyqtcfg = PyQt5.pyqtconfig.Configuration() +except ImportError: + import PyQt5.QtCore + import sipconfig # won't work for SIP v5 + import os.path + cfg = sipconfig.Configuration() + sip_dir = cfg.default_sip_dir + for p in (os.path.join(sip_dir, "PyQt5"), sip_dir): + if os.path.exists(os.path.join(p, "QtCore", "QtCoremod.sip")): + sip_dir = p + break + cfg = { + 'pyqt_version': PyQt5.QtCore.PYQT_VERSION, + 'pyqt_version_str': PyQt5.QtCore.PYQT_VERSION_STR, + 'pyqt_sip_flags': PyQt5.QtCore.PYQT_CONFIGURATION['sip_flags'], + 'pyqt_mod_dir': cfg.default_mod_dir, + 'pyqt_sip_dir': sip_dir, + 'pyqt_bin_dir': cfg.default_bin_dir, + } + pyqtcfg = sipconfig.Configuration([cfg]) + +print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version) +print("pyqt_version_num:%d" % pyqtcfg.pyqt_version) +print("pyqt_version_str:%s" % pyqtcfg.pyqt_version_str) + +pyqt_version_tag = "" +in_t = False +for item in pyqtcfg.pyqt_sip_flags.split(' '): + if item == "-t": + in_t = True + elif in_t: + if item.startswith("Qt_4"): + pyqt_version_tag = item + else: + in_t = False +print("pyqt_version_tag:%s" % pyqt_version_tag) + +print("pyqt_mod_dir:%s" % pyqtcfg.pyqt_mod_dir) +print("pyqt_sip_dir:%s" % pyqtcfg.pyqt_sip_dir) +print("pyqt_sip_flags:%s" % pyqtcfg.pyqt_sip_flags) +print("pyqt_bin_dir:%s" % pyqtcfg.pyqt_bin_dir)