summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>2012-11-27 20:40:16 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-29 20:21:11 +0100
commitaeb036ed8715d0c099d3dca87f7def4dbaf8e9b4 (patch)
tree95a679c8b456c61bc108e1a68b0aced288313df6 /mkspecs
parent12dcab77a7248268c58c2c5431c2c237e14d1089 (diff)
centralize and fixup example sources install targets
it's confusing for the users if the examples' project files contain code to install their own sources. also, this constitutes an enormous code duplication, and lots of mistakes. consequently, automate it. more or less as a side effect, this also removes the entirely meaningless target installs in subdirs projects. Task-number: QTBUG-28184 Change-Id: I9fc1367a06db9e2c46aeb67d68729a4f67163ef9 Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/qt_build_config.prf1
-rw-r--r--mkspecs/features/qt_example_installs.prf71
2 files changed, 72 insertions, 0 deletions
diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf
index df07630ffa..63d6b43c7c 100644
--- a/mkspecs/features/qt_build_config.prf
+++ b/mkspecs/features/qt_build_config.prf
@@ -28,6 +28,7 @@ mac {
CONFIG += \
create_prl link_prl \
prepare_docs qt_docs_targets \
+ qt_example_installs \
no_private_qt_headers_warning QTDIR_build \
# Qt modules get compiled without exceptions enabled by default.
# However, testcases should be still built with exceptions.
diff --git a/mkspecs/features/qt_example_installs.prf b/mkspecs/features/qt_example_installs.prf
new file mode 100644
index 0000000000..72f0b141a7
--- /dev/null
+++ b/mkspecs/features/qt_example_installs.prf
@@ -0,0 +1,71 @@
+probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
+!contains(probase, ^\\..*) {
+ for(ex, EXAMPLE_FILES): \
+ sourcefiles += $$files($$absolute_path($$ex, $$_PRO_FILE_PWD_))
+ for(res, RESOURCES) {
+ rfile = $$cat($$absolute_path($$res, $$_PRO_FILE_PWD_), lines)
+ for(rline, rfile) {
+ resrc = $$replace(rline, ^[ \\t]*<file[^>]*>([^<]+)</file>[ \\t]*$, \\1)
+ !equals(resrc, $$rline): \
+ sourcefiles += $$resrc
+ }
+ }
+ for(res, RC_FILE) {
+ rfile = $$cat($$absolute_path($$res, $$_PRO_FILE_PWD_), lines)
+ for(rline, rfile) {
+ resrc = $$replace(rline, "^\\d+\\s+ICON\\s+[^\"]*\"([^\"]+)\"\$", \\1)
+ !equals(resrc, $$rline): \
+ sourcefiles += $$resrc
+ }
+ }
+ extras = \
+ $$_PRO_FILE_PWD_/README \
+ $$files($$_PRO_FILE_PWD_/*.pri) \
+ $$replace(_PRO_FILE_, \\.pro$, .json) \
+ $$replace(_PRO_FILE_, \\.pro$, .inf)
+ for(extra, extras): \
+ exists($$extra): \
+ sourcefiles += $$extra
+
+ # Just for Qt Creator
+ OTHER_FILES += $$sourcefiles
+
+ sourcefiles += \
+ $$_PRO_FILE_ $$RC_FILE $$DEF_FILE \
+ $$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \
+ $$DBUS_ADAPTORS $$DBUS_INTERFACES
+ for(sf, sourcefiles) {
+ sf = $$relative_path($$sf, $$_PRO_FILE_PWD_)
+ contains(sf, \\..*) {
+ check_examples: message("Notice: $$_PRO_FILE_ refers to $$sf")
+ } else {
+ sfp = $$replace(sf, /.*, )
+ !equals(sfp, $$sf): \
+ sources.files *= $$sfp
+ else: \
+ sources.files += $$sf
+ }
+ }
+ sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase
+ INSTALLS += sources
+
+ check_examples {
+ thefiles = $$files($$_PRO_FILE_PWD_/*)
+ for(i, thefiles): \
+ allfiles += $$relative_path($$i, $$_PRO_FILE_PWD_)
+ for(i, sources.files): \
+ allfiles -= $$relative_path($$i, $$_PRO_FILE_PWD_)
+ for(i, SUBDIRS) {
+ sd = $$eval($${i}.file)
+ !isEmpty(sd) {
+ sd ~= s,/.*,,
+ } else {
+ sd = $$eval($${i}.subdir)
+ isEmpty(sd): sd = $$i
+ }
+ allfiles -= $$sd
+ }
+ allfiles -= doc
+ !isEmpty(allfiles): warning("remaining files in $$_PRO_FILE_PWD_: $$allfiles")
+ }
+}