aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* Improve CMake clang detection logicAlexandru Croitor2018-04-201-1/+8
| | | | | | | | | | | | Before calling llvm_config, check that the path to llvm_config is non-empty. Otherwise exit early. Change-Id: Ibde88bbcc6a1c6324b2a0cbb1b62f894a7aae42c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* Fix typo on shiboken cmake configurationCristian Maureira-Fredes2018-03-121-1/+1
| | | | | Change-Id: I3649f57ba75a38db373d3491b253507f60c9ee6f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Check for compatible Qt version when building PySide2Alexandru Croitor2018-03-061-1/+1
| | | | | | | | | Shiboken uses C++11 constructs like qAsConst, which necessitates the usage of a Qt version >= 5.7. Instead of showing weird compilation errors when building against Qt 5.6, print a nice error message. Change-Id: Iea4bd41dbe1d7d05e9b28bfa6654f68c6633cd74 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2018-03-051-19/+41
|\ | | | | | | Change-Id: I452d3a0a04e282b678879132ca1b3a272910ef04
| * Implement proper package versioningAlexandru Croitor2018-03-021-19/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change is inspired by / follows PEP 440 for handling version numbers and also takes into account the Qt versioning scheme. PySide2 as package name will stay as-is (not renamed to PySide5). Release versions would have the following pattern: PySide2 5.x.y (e.g. 5.6.3) Package (wheel) name would also contain the bundled Qt version, e.g.: PySide2-5.6.0-5.6.4-cp27-cp27m-macosx_10_7_intel.whl Pre-release versions would look like: PySide2 5.6.0a1, 5.6.0a2, 5.6.0b1, 5.6.0b2, 5.6.0rc1, etc. Development (snapshot) versions would look like: PySide2 5.6.0-dev123456789 (last part is timestamp of build time) All of the examples above comply with the PEP 440 rules. In the example above where the Qt version is specified as part of the wheel package name ("5.6.4"), the Qt version is not part of the package version itself, because it doesn't comply with PEP 440. But it does comply with wheel package names (PEP 427), and by that PEP's definitions, it will be the optional "build tag" part of the file name, which is preceded by the actual package version, and followed by the python version / abi tag. Implementation: This change defines two new python configuration files which will be the authoritative source for the shiboken and PySide2 libraries, as well as the final PySide2 package itself: sources/shiboken/shiboken_version.py sources/pyside2/pyside_version.py The pyside_version.py file will be the source of the final package version. The shiboken and PySide2 version should be modified in sync, when bumping the version of the package before a release. The reason for having both files instead of 1, is to make life easier for developers that might extract only shiboken from the repository. If at some point shiboken and PySide2 CMake projects get merged into one project, the duplicate version files would go away. The version files are parsed by CMake to correctly name the shared libraries (and SO versions), and they are also read by the setup.py script, to generate correct package metadata and a correct package (wheel) name. This change also removes the broken dist targets from PySide2's and shiboken's CMakelists files, which depended on some version suffix which was never set in setup.py. PEP440: https://www.python.org/dev/peps/pep-0440/ PEP427: https://www.python.org/dev/peps/pep-0427/ Change-Id: I3226460b1adf2555c8711fa2ba47c223b957cb44 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Add rudimentary support for address sanitizer buildsAlexandru Croitor2018-02-231-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds a new setup.py option called --sanitize-address which will build all executables and shared libraries with address sanitizer enabled. The builds will only succeed on Linux and macOS machines that have new enough gcc / clang versions, so it is a "use at your own risk" build configuration. This change was necessitated by the random crashes that are sometimes observed on the CI machines, and due to valgrind not working properly on new macOS versions, using AddressSanitizer is the next best thing. Note that when running tests with address sanitizer builds, you might need to export a LD_PRELOAD / DYLD_INSERT_LIBRARIES environment variable pointing to the address sanitizer runtime library path, which will be provided by the crashed application. Change-Id: I93014002e5c5e94bcc808ba2fb830d60724cfb69 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2018-02-231-0/+1
|\| | | | | | | Change-Id: I5d1a4734e8f44785898ba62beaa0bdd2004fca22
| * Don't copy duplicate libraries on package installationAlexandru Croitor2018-02-221-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change makes sure to resolve symlinks and copy only one file for every dynamic shared library used (vs 3 before -> 2 symlinks + 1 actual library). This avoids duplicate files, as well as saves space when creating wheel (e.g. no 3 copies of standalone WebEngine library). This filtering happens copying from CMake install dir into pyside_package_dir (the symlinks are still present in the CMake dir, but that shouldn't harm anybody, and might be useful for users of shiboken only for example). Task-number: PYSIDE-495 Change-Id: I0fe454e16c6b254a8682aa7b1c702ec01a3064f0 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2018-01-191-2/+12
|\| | | | | | | Change-Id: I5f2e1660a27efafa445592898db4dfe3250306e0
| * Do not link shared libraries against the python shared library on UnixAlexandru Croitor2018-01-151-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no need to link against the python shared library (or static library) on Linux / macOS because the python symbols will already be loaded by the dynamic linker, by the time when a PySide2 module is imported. This is especially relevant on Debian distributions, which ship a statically built python interpreter, as well as a python shared library (which is not used by the interpreter). The python shared library package is intended for native application that want to embed a Python interpreter inside the application. So far PySide2 would have linked against the python shared library, which means that on Debian distributions when running a PySide2 example, the executable would load two versions of the same python symbols (one from the static interpreter, and one from the shared library), and this might cause issues. On Windows we still need to link against the python.lib import library, because otherwise the python symbols would not be resolved. Task-number: PYSIDE-522 Change-Id: I4483ded96461c04f8e7a17d39068d07f772a973c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Use latest version of llvm-configFriedemann Kleint2017-11-031-4/+23
| | | | | | | | | | | | | | | | | | | | When falling back to llvm-config, try to determine the most recent version by using a glob pattern to find the executable (llvm-config-3.8/3.9...) and checking the version it reports. Change-Id: I13b5aff09a6a2f8b95def0041176c1487749be1a Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Replace _ARCH_ by 64/32bit in LLVM_INSTALL_DIRFriedemann Kleint2017-09-221-0/+17
| | | | | | | | | | | | Task-number: PYSIDE-431 Change-Id: I6d4ea037ab0c524f305ed72f95745deb410b8971 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Bump minimum required CMake version to 3.1Alexandru Croitor2017-07-271-2/+2
| | | | | | | | | | | | | | | | | | Shiboken uses C++11 features, and thus the CMAKE_CXX_STANDARD setting needs to be set in the CMakeLists.txt file. The setting was introduced in CMake version 3.1.0. Thus we bump the minimum required version. Change-Id: Ic93dc76440930a19945bbd95461fc5859f2df0d0 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Force usage of C++11 for shibokenAlexandru Croitor2017-07-261-0/+4
| | | | | | | | | | | | | | | | | | | | Previously we requested C++11 support from the compiler, but if the compiler does not support the standard, CMake would silently fall back to using C++08. Force usage of C++11, and cancel the build if the standard is not supported. Change-Id: I963a3f3d0b7dffb85a822c7aeb5f6979c0bbc189 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Fix building on openSuSE and Ubuntu 16.04 CI machinesAlexandru Croitor2017-07-241-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously all the GCC header paths were explicitly passed to libclang, which caused redefinition errors of builtin functions or intrisics (like __rdtsc). Instead of passing the include paths explicitly, we rely on libclang itself recognizing that there are GCC paths in the default search locations. Also we need to pass the libclang builtin headers location, because it is not able to find them by itself. Usually the search location for these headers is to get the executable path location (aka the clang++ binary) and navigate to ../lib/clang/VERSION/include relative to that binary. But because the shared library is used instead of the binary, we need to explicitly pass that header location via the -isystem flag. Task-number: PYSIDE-513 Change-Id: I7c1127d85c0cea4c063c5c2a3548a1eef5eadaf3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2017-07-141-75/+98
|\| | | | | | | Change-Id: I1dd2958b252b82e8699e8d2212afdce0086a16d2
| * Fix Windows module extensions and tests to work with --debug buildAlexandru Croitor2017-07-121-24/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the same imp.get_suffixes() mechanism as on Unix, to determine the suffix part of module extension files. This fixes debug builds to work on Windows. Note that the whole build stack has to use the same configuration, no mixing is allowed on Windows. For release build you need: python.exe + setup.py without --debug flag + release build of Qt5. For debug build you need: python_d.exe + setup.py with --debug flag + debug build of Qt5. Change-Id: I6188c859b5757d11e87d6a9e32b9ba558f7f609e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Improve suffix names for shared libraries and cmake config filesAlexandru Croitor2017-07-121-73/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change decouples the naming of general shared libraries, python module extensions, and cmake configuration files. All of them are now computed depending on the python version and python build configuration, and can also be manually set via CMake variables. The module extensions names now use the most detailed 'import' prefix, which usually informs whether a debug or release python was used, or the Python ABI flags (for Python >= 3.2). When a debug Python interpreter is used for building PySide2, the preprocessor define Py_Debug is now correctly propagated to PySide2 sources, which fixes previous crashes in debug builds. This affects only Linux and macOS builds. There is a subsequent change for making it work for Windows builds. All in all, this now allows proper mixing of debug / release versions of the Python interpreter with debug / release versions of PySide2 on Linux and macOS. Task-number: PYSIDE-508 Change-Id: I88a05c3ada0fb32c7c29bdb86d7a2c15acc963b8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * move everying into sources/shiboken2Oswald Buddenhagen2017-05-221-0/+244
| | | | | | in preparation for a subtree merge. this should not be necessary to do in a separate commit, but git is a tad stupid about following history correctly without it.
* Shiboken: Set C++ 11 globallyFriedemann Kleint2017-06-281-0/+1
| | | | | Change-Id: I17634ebc245cae87819af16d79704326905e5783 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* move everying into sources/shiboken2 (5.9 edition)Oswald Buddenhagen2017-05-221-0/+285
in preparation for a subtree merge. this should not be necessary to do in a separate commit, but git is a tad stupid about following history correctly without it.