Commit Graph

45 Commits

Author SHA1 Message Date
Stephen Kelly
6444d36e5d Use a qmake variable to pass the Qt version to the cmake version file.
By depending on a simple variable instead of a more complex expression, we
can more easily use this file from other contexts.

Change-Id: Ib6ce1e2537f3e7ac19d25ad33454f25e85f71040
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2012-10-19 13:02:17 +02:00
Stephen Kelly
89c53738de CMake: Remove content from else() and endif() commands.
Having them empty is the common style and is less noisy.

Change-Id: I30c0c4d297a7bdb373a57a636f4fdbc488a69fcd
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
2012-10-19 02:44:26 +02:00
Stephen Kelly
102e1822ff Remove addition of dependencies for static libraries.
The content in the prl file is not compatible with what CMake
expects in the value of the IMPORTED_LINK_INTERFACE_LIBRARIES
property. That property expects a list of IMPORTED targets or
full paths to libraries.

The prl file gives us a whitespace separated string of content
suitable for passing to ld, that is, it contains -L and -l content.
As this would take a lot of error prone parsing in cmake code in
order to resolve the content to a list of full paths to libraries
(which can be processed by any cmake generator), it's better to
remove the code until qmake is able to generate a list of full
paths.

Change-Id: I72fe8e862b7f3bd25a7f9a03db94d2e9b815d08a
Reviewed-by: Brad King <brad.king@kitware.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-10-16 17:31:31 +02:00
Stephen Kelly
95e548eeaa Generate ';' separated libraries in prl files for CMake.
The generated CMake files need to pass ';' separated libraries to
the IMPORTED_LINK_INTERFACE_LIBRARIES property, otherwise we get errors
such as this:

http://testresults.qt-project.org/ci/QtTools_master_Integration/build_00386/win32-msvc2010_Windows_7/log.txt.gz

(grep for QtCore5.lib.lib)

Rather than a naive and error prone replacement of whitespace, generate
the appropriate ';' separated content directly in the qmake prl file.

Change-Id: I8eb5e233a0318b57ec74b86d910583ff99c29415
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Brad King <brad.king@kitware.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-10-09 06:09:32 +02:00
Stephen Kelly
f8ca79579f CMake: Fix the generated location of static libraries.
We need to make sure to put the .lib file into the LOCATION property,
not the .dll file, when building a static library.

Change-Id: I8912abfd172d0939cd07ba02901ab58093ccefa1
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-09-26 10:08:59 +02:00
Stephen Kelly
9ca74072d7 Report a FATAL_ERROR if trying to use Qt 5 with CMake < 2.8.3.
Change-Id: I76cad71c96a5def170715568e6a16b1168cbb2cd
Reviewed-by: Volker Krause <volker.krause@kdab.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-08-31 16:10:25 +02:00
Stephen Kelly
ae6d4c77eb Make it possible to use static builds of Qt with CMake.
Parse the prl files generated by qmake to get the link dependencies. They
contain all the information we need, and they are the only location with
all the right information.

Change-Id: Id9dcc988f20a744297502eff008de085326cdbcf
Reviewed-by: Brad King <brad.king@kitware.com>
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-08-27 23:23:57 +02:00
Stephen Kelly
5eb230615d Fix minor typo in cmake files.
LIB_LOCATION is a cmake variable, not a qmake variable.

Change-Id: I1ec2feaca0c52400bd21dec371c9170dc95227b1
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2012-08-22 09:08:02 +02:00
Stephen Kelly
6b5cffdad5 Only set the IMPLIB target properties on Windows.
Change-Id: I5362ae87c90fe08460599602b54484b6d4491db8
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-08-22 09:08:02 +02:00
Stephen Kelly
73d127397d Quote the SONAME properly.
It does not make a big difference, but it is what was intended
initially.

Change-Id: Idd7e06c857533030b000726ff87b48bb2619df06
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
2012-07-23 17:48:51 +02:00
Stephen Kelly
301538cf01 Add another directory to the private INCLUDE_DIRS list.
It should be possible to include both:

* <QtGui/private/qfoo.h>
* <private/qfoo.h>

Change-Id: I83ed5bba633b4a6b9bd38e315c987d78beecfb1b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-07-19 12:03:27 +02:00
Stephen Kelly
e6abbe68a2 Create imported targets if the library files exist
Handle the cases where the user does

  ./configure -debug
  make
  make install
  make release
  make release_install

Thereby making the installed configuration different to the
'configured' configuration.

Change-Id: Ib351d8a84c4333ebcbd305d68a37c16f86869559
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Brad King <brad.king@kitware.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-07-16 16:30:55 +02:00
Stephen Kelly
0518a569c7 Fix the use of if() inside of macro().
if() seems to behave differently with macro parameters compared to
variables set with set().

Change-Id: Ieb9544b8c3187579fd4cfe25e2c2afa3f349eba6
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-07-16 14:22:55 +02:00
Stephen Kelly
1e469bac11 Set the IMPORTED_SONAME for imported targets.
On windows this doesn't need to be set. On Mac I'm not sure yet on
the various configurations.

Change-Id: I31f191711a2ae0a1bb7221ae6e1fef377d62f1dc
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-07-11 02:47:14 +02:00
Stephen Kelly
e3a9ac4f36 Set the language of a STATIC library.
This is used as a hint for the linker.

Change-Id: I869039c1ea50f1926809ead4064317628ebbb2e7
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-07-04 15:51:36 +02:00
Stephen Kelly
c4a05f5e3a Refactor the creation of imported targets into a macro.
This will make it easier to handle cases where the Qt installation
and the build do not match exactly. For example, on Windows, it
would be possible to do:

  ./configure -debug
  make
  make install
  make release
  make release_install

In which case, both debug and release libraries would be installed
even though it was only configured with -debug. On non-Windows, the
debug and release libraries would overwrite each other, so it is
not necessary to support it.

Similarly, we want to handle cases in the future where (on
non-Windows) both static and shared libraries would be
installed (again, not described with a single build configuration).

Change-Id: Ib7916c9664a0f72e40156a03bdfc79a4a6c24350
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-06-27 14:43:00 +02:00
Stephen Kelly
70c981f973 Fix the DEFINITIONS for Qt modules.
As the DEFINITIONS to be used for QtAddOns is different to essential
modules, rely on the logic in qt_module_config setting this variable
correctly.

Change-Id: I64485ccd6df093216cac4a97fb1cfaac0122a218
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-06-26 04:18:25 +02:00
Stephen Kelly
3d2a8d09d1 Add a variable for the private includes for modules.
This is required to use QPA for example in 5.0.

Change-Id: I44bfc6987d778370e55c05c591f63ff84c482d0a
Reviewed-by: David Faure <faure@kde.org>
2012-06-23 14:16:24 +02:00
Stephen Kelly
77a03ebd8d Expand the 'existing target guard' in generated CMake files.
This way the target will be created and have its properties
populated only one time.

I tried wrapping the whole file in an 'include guard', but that
broke the unit test in tests/auto/cmake/pass1 (and
the qt5_use_module function), because the function causes the
variables in the Config file to not exist outside of the
scope (eg for include directories), and yet, Qt5${Module}_FOUND is
still true even when the find_package was previously called in a
function, so it is not found and processed again.

The change in Qt5CoreConfigExtras.cmake does not need to be guarded
as it is only ever included from Qt5CoreConfig.

Change-Id: Iaa016563db5eb61294360ac9e003c9c923393d8c
Reviewed-by: Brad King <brad.king@kitware.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-06-07 19:08:34 +02:00
Stephen Kelly
a49a92bd9d Properly quote all variables which are paths.
This is required if Qt is installed into a directory with spaces.

Change-Id: I1d6874265558d712ac98a3aef670c2934a632ab1
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-16 12:03:54 +02:00
Stephen Kelly
f16a77d783 Use IF(NOT TARGET ...) before creating imported targets.
Initially we didn't do this because someone could accidentally create
another target of a conflicting name, and used a variable to store whether we
have created the target already or not.

That wasn't adequeate to deal with finding the package in a scope
like a function, so we used a directory property. However, the directory
property is not valid in the same scopes as the defined target. For
example, finding a Qt module in both a directory and a subdirectory causes
a conflict.

As it is already unlikely that a target would be accidentally created with
a name like Qt5::Core, we should simply use the IF(TARGET) form.

Change-Id: If64f25d45f51edcd1edb0d4bfb5ed3bb2479bd27
Reviewed-by: David Faure <faure@kde.org>
2012-05-15 23:03:23 +02:00
Stephen Kelly
2b735ac8e6 Use directory property instead of variable to determine target existance.
This is more resilient to calling find_package in a scope such
as a function.

Change-Id: I17e69a416f4aed3102fa6195d239bcf4ce0b306b
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-14 04:35:08 +02:00
Stephen Kelly
dd38ad600f Only find dependencies from the same Qt installation.
Add a PATH to search for dependencies in the current prefix, and
disable other CMake searching logic with NO_DEFAULT_PATH.

A Qt installation must all be installed to the same prefix currently.
If that constraint is ever relaxed, we can turn this into a hint instead.

Change-Id: I633cafb7e546dbd102ac0b2ed18db260d26adc51
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-13 18:49:10 +02:00
Stephen Kelly
4e8c20e97e Add underscore to internal implementation detail variables.
Change-Id: I4c70ed2808396931fff986fbfad5940dd39e74f6
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-10 22:46:55 +02:00
Stephen Kelly
bced700e88 Include the VERSION_STRING in CMake config files.
Change-Id: I9f0e9316241b4cb615350876b11ee263f7efd3bf
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-10 22:45:54 +02:00
Stephen Kelly
27ca259fb6 Don't attempt to ask cmake to find the glib dependencies.
Those components are not known to FindGTK2.cmake.

Change-Id: I4a7fe35d7d118168c24285f3ea8f57822b2facff
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-08 06:59:19 +02:00
Stephen Kelly
e72a425e13 If a dependency was not found, and we were not called with REQUIRED, we are not found.
This only works with CMake 2.8.8, but it is no harm to earlier versions.

Change-Id: I62c220e4b24f951e83c23eb57d5f833de4d181c5
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-04-29 20:28:00 +02:00
Stephen Kelly
05dddb265c Properly quote the dependencies string.
Change-Id: I319b04cdb21860652658ee8d3e577d41a913ed5a
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-04-29 20:27:39 +02:00
Stephen Kelly
6e8d306ca7 Make sure different modules do not overwrite each others dependencies.
Change-Id: I30ca05d3c692a707cfe829ad5fee099549bab540
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-04-29 14:05:39 +02:00
Stephen Kelly
7fc8edf069 Forward the REQUIRED and QUIET arguments when finding dependencies.
Change-Id: I5d7c26f12a296ac3527575149978b18c5e9a4a67
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-04-29 14:05:39 +02:00
Stephen Kelly
f524470a95 Overwrite the LIB_DEPENDENCIES of modules.
This way if a module is found more than once, the list does not grow
duplicates.

Change-Id: I08e3e2a83453f45a49fe79e803a4b50d115709a3
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-03-31 01:49:26 +02:00
Stephen Kelly
e96a7e0115 Ensure that the variable for the installation prefix is unique.
Using the same variable for multiple config files can lead to
conflicts.

Change-Id: Ie6a22618c4c2e64567874e5c7e8b278e067fedae
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-03-31 01:49:26 +02:00
Stephen Kelly
4a6bf9d941 Prefix the variables for debug and release types properly.
Change-Id: I346992effa997f60a4fd20055f0af81d6a084095
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-03-28 00:51:32 +02:00
Stephen Kelly
c01ef19e77 List the dependencies of Qt when creating static libraries.
Change-Id: Ib6787f982ff962cfdf3d8a0a26989489619a57b0
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-03-05 11:36:36 +01:00
Stephen Kelly
018e78575c Make the CMake files work with directory overrides.
This allows us to create correct CMake config files when Qt is
configured with directories outside of the prefix (which Qt allows),
and also allows us to use correct values when a 'longer' relative
lib directory is used such as lib/x86_64-linux-gnu.

Change-Id: I6f88255a23752dc5b84cb20ce13fdeeee9d5ad51
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-02-28 21:07:16 +01:00
Stephen Kelly
4d0d49a92c Use QMAKE_SUBSTITUTIONS conditionals
Instead of generating CMake conditionals.

Change-Id: I3d987cc08666270e618222be9292558e73bc961e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-02-22 19:25:06 +01:00
Stephen Kelly
361cd9f9b2 Give the compile flags an EXECUTABLE_ prefix.
The fPIE flag should only be used with executables.

Change-Id: If799ae4a7fe2492af3aac67651659a52d365024a
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-02-21 22:31:00 +01:00
Stephen Kelly
008a1573af Make modules find their own dependencies.
Change-Id: I4a7b96d33417a15d79f3932ced91bee58915c83f
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-01-11 01:11:47 +01:00
Stephen Kelly
34ebd0397e Fix cmake files for static builds.
Change-Id: I3864017df6fc0daeb31b389c8883401d344730bf
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2011-12-23 17:35:33 +01:00
Stephen Kelly
5fb4bf8987 Include the extras files after defining the target.
Allows the extras file to contain references to the target.

Change-Id: I47332c4efcb7ba0132509a41fa3040531cd1c81f
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2011-12-19 10:41:50 +01:00
Stephen Kelly
4d98b83c17 Use plural form for CMake variables.
Change-Id: Idc0cd360e09046a5746c9f7366c7fd4b982058fe
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2011-12-06 11:57:11 +01:00
Stephen Kelly
3b3531285d Remove CMake variables which are not needed in Config files.
Change-Id: I8f6795f1d40983af0478270f33ab1c06abe67133
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2011-12-06 11:57:11 +01:00
Stephen Kelly
353c404f04 Quote the path in CMake so that spaces in paths work.
Change-Id: Ie73a4b242ab0bf90e6f292be9a7b7913ae4273a5
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2011-12-03 23:14:33 +01:00
Stephen Kelly
e0593c828b Make the Qt5 part of the target name namespace style.
As it was in Qt4 and discussed on the cmake list.

Change-Id: Ide77c2525a261a5d658d7cb661010a67d3386341
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2011-12-02 14:17:40 +01:00
Stephen Kelly
a482487b9f Install CMake config files from Qt.
This includes a BSD licenced file Qt5CoreMacros.cmake which is
adapted from Qt4Macros.cmake in the CMake source tree.

Change-Id: I54326b808795535490a0489659b351a8da72cdbb
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2011-11-29 17:08:39 +01:00