Commit Graph

67 Commits

Author SHA1 Message Date
Sebastian Holtermann 35e8a6de86 Autogen: Tests: More rigorous rcc rebuild tests
Closes: #16103
2017-03-23 16:51:34 +01:00
Sebastian Holtermann ef3c319b97 Autogen: Test: Add mocDepends test 2017-03-06 22:01:04 +01:00
Sebastian Holtermann 7f9baf5790 Autogen: Test: Add generated qrc file to rccDepends test 2017-03-06 22:01:04 +01:00
Sebastian Holtermann 81656b9210 Autogen: Test: Add generated file to moc rerun test 2017-03-06 22:01:03 +01:00
Sebastian Holtermann d9a7ef80aa Autogen: Test: Add timestamp comparison to moc rerun test 2017-03-06 22:01:03 +01:00
Sebastian Holtermann 89780663b3 Autogen: Test: Rename automoc_rerun test to mocRerun 2017-03-06 22:01:03 +01:00
Sebastian Holtermann 9cad44dce2 Autogen: Test: Rename autorcc_depends test to rccDepends 2017-03-06 22:01:03 +01:00
Sebastian Holtermann 6d7c02db34 Autogen: Add AUTOUIC_SEARCH_PATHS test 2017-03-02 09:10:01 -05:00
Sebastian Holtermann 48b56504bf Autogen: Fix for Q_PLUGIN_METADATA change detection test 2017-02-26 19:05:56 +01:00
Sebastian Holtermann 94e3f82cf1 Autogen: Add AUTOMOC_DEPEND_FILTERS test 2017-02-22 21:15:03 +01:00
Sebastian Holtermann 29d96633a4 Autogen: Don't use .moc include in Q_PLUGIN_METADATA test 2017-02-21 10:38:51 -05:00
Sebastian Holtermann 8b13a52c49 Autogen: Tests: Set different compression levels in rcc test 2017-02-21 10:38:50 -05:00
Sebastian Holtermann cd74daf06f Autogen: Tests: Add Q_PLUGIN_METADATA test 2017-02-21 10:38:49 -05:00
Sebastian Holtermann 39c4819eaa Autogen: Tests: Add moc include tests 2017-02-21 10:38:49 -05:00
Sebastian Holtermann 50805693ba Autogen: Tests: Clean comments 2017-02-21 10:12:55 -05:00
Sebastian Holtermann c17e0a3ad5 AUTOGEN: Tests: AUTORCC SKIP_AUTORCC and SKIP_AUTOGEN test 2017-01-10 12:49:17 +01:00
Sebastian Holtermann 53787bf8de AUTOGEN: Tests: AUTOUIC SKIP_AUTOUIC and SKIP_AUTOGEN test 2017-01-10 12:49:16 +01:00
Sebastian Holtermann 8dbdd3e726 AUTOGEN: Tests: AUTOMOC SKIP_AUTOMOC and SKIP_AUTOGEN test 2017-01-10 12:49:16 +01:00
Sebastian Holtermann 5961db4143 QtAutogen: Tests: Increase minimum required CMake version 2016-12-07 08:24:05 -05:00
Sebastian Holtermann 6d0a8af368 QtAutogen: Tests: Don't use std::auto_ptr 2016-12-07 08:24:05 -05:00
Sebastian Holtermann 6731025211 QtAutogen: Tests: Don't include CMAKE_CURRENT_BINARY_DIR 2016-12-07 08:24:05 -05:00
Sebastian Holtermann 6938772a11 QtAutogen tests: Pass Qt compiler features to library targets 2016-11-29 18:46:39 +01:00
Sebastian Holtermann c4d4becf8b QtAutogen tests: Move the complex test case to a subdirectory 2016-11-29 17:16:33 +01:00
Sebastian Holtermann 2599f5d64b QtAutogen tests: Extend test description in CMakeLists.txt 2016-11-29 17:16:33 +01:00
Sebastian Holtermann 7052af9d4a QtAutogen tests: Move independent sameName test to top list of CMakeLists.txt 2016-11-29 17:16:33 +01:00
Sebastian Holtermann d675004dba QtAutogen tests: Rename uiconly target to camel case uicOnly
Also move uicOnly sources to dedicated uicOnlySource directory.
2016-11-29 17:16:33 +01:00
Sebastian Holtermann cb4bc19ae1 QtAutogen tests: Rename rcc_empty target to camel case rccEmpty 2016-11-29 17:16:33 +01:00
Sebastian Holtermann 59dbd3f891 QtAutogen tests: Rename rcconly target to camel case rccOnly.
Also add dedicated rccOnlyRes.qrc file for the rccOnly target.
2016-11-29 17:16:33 +01:00
Sebastian Holtermann bcafc399c5 QtAutogen: Add test for empty qrc file 2016-09-30 10:02:49 -04:00
Brad King 86578eccf2 Simplify CMake per-source license notices
Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool.  Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience.  Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.

Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices.  It also references version control
history for more precise information.  Therefore we no longer need to spell
out the list of Contributors in each source file notice.

Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing".  The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.

Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically.  Manually fix up shebang lines and trailing
newlines in a few files.  Manually update the notices in a few files that the
script does not handle.
2016-09-27 15:14:44 -04:00
Sebastian Holtermann e4f508e423 Tests/QtAutogen: Test same moc/qrc source names in different directories 2016-08-10 13:21:34 -04:00
Brad King 5e55d87bdc Autogen: Revert changes to generate moc/rcc in subdirectories
Revert these commits:

* v3.6.0-rc1~134^2
  Tests: QtAutogen: Same source name in different directories test, 2016-04-13
* v3.6.0-rc1~134^2~1
  Autogen: Generate qrc_NAME.cpp files in subdirectories, 2016-04-19
* v3.6.0-rc1~134^2~2
  Autogen: Generate not included moc files in subdirectories, 2016-04-19

They regress existing builds that depend on the paths/symbols generated
previously.  Another approach will be needed to solve the name collision
problem they were intended to solve.  Leave the error diagnostics for
the colliding cases that were added in the same topic as the above
commits because they provide a useful early failure in relevant cases.

Fixes #16209.
2016-07-21 09:27:19 -04:00
Kitware Robot d9fd2f5402 Revise C++ coding style using clang-format
Run the `Utilities/Scripts/clang-format.bash` script to update
all our C++ code to a new style defined by `.clang-format`.
Use `clang-format` version 3.8.

* If you reached this commit for a line in `git blame`, re-run the blame
  operation starting at the parent of this commit to see older history
  for the content.

* See the parent commit for instructions to rebase a change across this
  style transition commit.
2016-05-16 16:05:19 -04:00
Brad King e1c7747253 Format include directive blocks and ordering with clang-format
Sort include directives within each block (separated by a blank line) in
lexicographic order (except to prioritize `sys/types.h` first).  First
run `clang-format` with the config file:

    ---
    SortIncludes: false
    ...

Commit the result temporarily.  Then run `clang-format` again with:

    ---
    SortIncludes: true
    IncludeCategories:
      - Regex:    'sys/types.h'
        Priority: -1
    ...

Commit the result temporarily.  Start a new branch and cherry-pick the
second commit.  Manually resolve conflicts to preserve indentation of
re-ordered includes.  This cleans up the include ordering without
changing any other style.

Use the following command to run `clang-format`:

    $ git ls-files -z -- \
        '*.c' '*.cc' '*.cpp' '*.cxx' '*.h' '*.hh' '*.hpp' '*.hxx' |
      egrep -z -v '(Lexer|Parser|ParserHelper)\.' |
      egrep -z -v '^Source/cm_sha2' |
      egrep -z -v '^Source/(kwsys|CursesDialog/form)/' |
      egrep -z -v '^Utilities/(KW|cm).*/' |
      egrep -z -v '^Tests/Module/GenerateExportHeader' |
      egrep -z -v '^Tests/RunCMake/CommandLine/cmake_depends/test_UTF-16LE.h' |
      xargs -0 clang-format -i

This selects source files that do not come from a third-party.

Inspired-by: Daniel Pfeifer <daniel@pfeifer-mail.de>
2016-04-29 13:58:54 -04:00
Sebastian Holtermann 84946c735c Tests: QtAutogen: Same source name in different directories test
The test features multiple .cpp and .qrc files with the same name
in different subdirectories. This requires AUTOMOC and AUTORCC to
generate files with names that respect the path information of
the source files.
2016-04-22 08:55:44 -04:00
Brad King 091b649e19 Revert "Automoc: Fix support of files with the same name (#12873)"
This reverts commit 9beb2744d7.
Our AUTOMOC documentation states that it should be possible to
`#include "moc_foo.cpp"` in `foo.cpp`, and this will not work if
the file is placed in a different directory.  Another solution
will need to be found to the original problem.

Reported-by: Stephen Kelly <steveire@gmail.com>
2016-02-19 08:59:17 -05:00
Mariusz Pluciński 9beb2744d7 Automoc: Fix support of files with the same name (#12873) 2016-02-16 10:45:19 -05:00
Stephen Kelly 9bc6eb8e1f cmGlobalGenerator: Initialize generator targets on construction (#15729)
The Ninja generator and Visual Studio generators are special-cased for the
QtAutogen feature.  In order to reduce the number of custom targets, the Visual
Studio generators prefer to create custom commands instead, and in order to
create appropriate Ninja files, generated rcc files are listed as byproducts.

This requires the use of the GetConfigCommonSourceFiles API of the
cmGeneratorTarget for those generators when initializing the autogen target.
The initializer method is called from Compute() after the cmGeneratorTarget
objects are created, however the initialization of the object directory occurs
later in the InitGeneratorTargets method.  That means that the resulting object
locations are computed incorrectly and cached before the object directory is
determined, so the generated buildsystem can not find the object files.

The initialization of the object directory was split from the creation of
cmGeneratorTarget instances in commit 0e0258c8 (cmGlobalGenerator: Split
creation of generator object from initialization., 2015-07-25).  The motivation
for the split was to do only what is essential to do early in cases where
cmGeneratorTargets need to be created at configure-time.  That is required for
the purpose of implementing policies CMP0024 and CMP0026, and for
try_compile(LINK_LIBRARIES).  However, the split was not really necessary.

Compute the object directory in the cmGeneratorTarget constructor instead.

The QtAutogen unit test already tests the use of TARGET_OBJECTS with AUTOMOC,
and that test already passes on Ninja.  The reason it already passes is that
the QtAutogen target also uses the AUTORCC feature, and specifies several qrc
files in its SOURCES.  Later in the Compute algorithm (after the
InitGeneratorTargets call), the rcc files are determined and target->AddSource
is called.  The AddSource call clears the previously mentioned cache of source
files, causing it to be regenerated when next queried, this time taking account
of the object directory.

Extend the test suite with a new target which does not make use of AUTORCC with
qrc files so that the test added alone would break without the fix in this
commit.
2015-09-29 09:56:34 -04:00
Brad King bddfe77d12 Merge topic 'qt-autogen-always-run'
2bf22a4b QtAutogen: Add comment explaining why rcc cannot use PRE_BUILD
0e346427 QtAutogen: Always run autogen step even when rcc is enabled (#15608)
2015-06-23 09:08:15 -04:00
Stephen Kelly 6af9fa1294 Tests: Don't hang when running Qt5Autogen built with GCC 5 (#15570).
Since Qt 5.4.2, it is necessary to compile against Qt 5 with -fPIC
and not -fPIE when using GCC 5.  Not doing so results in a hanging
test in this case, so use the PIC flag directly instead.
2015-06-21 14:50:50 +02:00
Brad King 0e346427a2 QtAutogen: Always run autogen step even when rcc is enabled (#15608)
In commit v3.2.0-rc1~480^2 (QtAutogen: Regenerate qrc files if their input
changes, 2014-09-17) the "cmake -E cmake_autogen" rule was switched from
always running to running as a custom command with dependencies if rcc
is enabled.  This is not correct because automoc always needs to re-run.
Switch back to always running the command.
2015-06-19 10:29:38 -04:00
Brad King 258ba82882 QtAutogen: Process 'rcc --list' stdout and stderr separately (#15523)
The stderr may have warning messages.  We should not treat these lines
as resource files.  However, we must still recognize error message lines
for missing resource files that may be generated.

Extend the QtAutogen test to cover a generated resource as the only one
listed in a .qrc file.  This causes 'rcc --list' to print a warning to
stderr that we now intend to ignore.
2015-04-21 09:33:19 -04:00
Brad King e8fdd5f12a QtAutogen: Workaround rcc CRCRLF newlines on Windows (#15459)
The 'rcc --list' operation may print newlines of the form CRCRLF,
so strip any trailing CR characters found on each line.

Update the Tests/QtAutogen test to use a resource named in a
subdirectory.  This causes 'rcc --list' to display a blank line
and tests that it is correctly filtered out.
2015-04-16 15:10:40 -04:00
Brad King 15f1a6b499 Tests/QtAutogen: Avoid touching files in the source tree 2015-04-16 15:06:32 -04:00
Brad King 3f7c7c6596 Tests/QtAutogen: Help Qt5Autogen test find Qt5 on Windows
Set CMAKE_PREFIX_PATH to tell find_package(Qt5) where to look.
2015-04-16 15:06:31 -04:00
Brad King 26b5cc5e79 Tests/QtAutogen: Enable per-config source tests when possible
Pass CMAKE_BUILD_TYPE into the test on generators that use it so that
the per-config part of the test can activate as needed.  Do not make the
per-config part conditional on the Debug configuration because the
generator expressions evaluate to empty in other configurations.

Skip the per-config source case with the Ninja generator because it does
not currently work.  cmQtAutoGenerators::InitializeAutogenTarget needs
to know the list of source files on a target, but generator expressions
in the list cannot be evaluated until after CreateGeneratorTargets has
been called.  That cannot happen until after Autogen targets have been
generated.  It is a chicken-and-egg problem.
2015-04-16 15:00:26 -04:00
Brad King 4556640855 Tests/QtAutogen: Require CMake 3.1 to set policies everywhere
We want CMP0020 set in the autorcc_depends test.  Also the test should
now only run when we can support per-config source files.
2015-04-16 14:18:00 -04:00
Brad King b4f62b875b Merge topic 'fix-autouic-regression'
9a673737 QtAutoUic: Add a test for the regression in the parent commit.
7c585699 QtAutoUic: Restore source file AUTOUIC_OPTIONS settings
2015-01-12 08:57:52 -05:00
Stephen Kelly 9a67373716 QtAutoUic: Add a test for the regression in the parent commit. 2015-01-12 01:41:27 +01:00
Stephen Kelly 6e1c359fe9 QtAutogen: Regenerate qrc files if their input changes (#15074)
Get dependencies from the output of ``rcc --list`` if using
Qt 5.  Otherwise process the file in the same way as the
qt4_add_resources macro.

This does not work for RCC files which are generated.

The cmake_autogen build step is implemented as a PRE_BUILD step
of the target currently if possible, rather than a standalone
custom target.  This is to keep the number of (synthesized)
custom targets that appear in the UI low, but in some cases
it is necessary to fall back to a full custom target.

Fall back to a full custom target for the VS builds if autorcc
is used.
2014-10-24 19:45:27 +02:00