summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/qt_module_headers.prf
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs/features/qt_module_headers.prf')
-rw-r--r--mkspecs/features/qt_module_headers.prf61
1 files changed, 61 insertions, 0 deletions
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf
new file mode 100644
index 0000000000..6a1854a771
--- /dev/null
+++ b/mkspecs/features/qt_module_headers.prf
@@ -0,0 +1,61 @@
+#load up the headers info
+include($$MODULE_BASE_OUTDIR/include/$$TARGET/headers.pri, "", true)
+
+lctarget = $$lower($$TARGET)
+uctarget = $$upper($$TARGET)
+
+defineTest(shouldMasterInclude) {
+ bn = $$basename(1)
+ contains(bn, .*_.*):return(false)
+ contains(bn, ^qconfig.*):return(false)
+ lines = $$cat($$_PRO_FILE_PWD_/$$1, lines)
+ contains(lines, $${LITERAL_HASH}pragma qt_no_master_include):return(false)
+ return(true)
+}
+
+# Create module version header
+MODULE_VERSION_HEADER = $$find(SYNCQT.HEADER_FILES, (^|/)$${lctarget}version\\.h$)
+count(MODULE_VERSION_HEADER, 1) {
+ MODULE_VERSION_HEADER = $$absolute_path($$MODULE_VERSION_HEADER, $$_PRO_FILE_PWD_)
+
+ !build_pass {
+ majorhexstr = $$format_number($$section(VERSION, ., 0, 0), width=2 zeropad obase=16)
+ minorhexstr = $$format_number($$section(VERSION, ., 1, 1), width=2 zeropad obase=16)
+ patchhexstr = $$format_number($$section(VERSION, ., 2, 2), width=2 zeropad obase=16)
+ modulehexstring = 0x$${majorhexstr}$${minorhexstr}$${patchhexstr}
+ MODULE_VERSION_HEADER_CONT = \
+ "/* This file was generated by qmake with the info from $${_PRO_FILE_}. */" \
+ "$${LITERAL_HASH}ifndef QT_$${uctarget}_VERSION_H" \
+ "$${LITERAL_HASH}define QT_$${uctarget}_VERSION_H" \
+ "" \
+ "$${LITERAL_HASH}define $${uctarget}_VERSION_STR \"$$VERSION\"" \
+ "" \
+ "$${LITERAL_HASH}define $${uctarget}_VERSION $$modulehexstring" \
+ "" \
+ "$${LITERAL_HASH}endif // QT_$${uctarget}_VERSION_H"
+ write_file($$MODULE_VERSION_HEADER, MODULE_VERSION_HEADER_CONT)|error("Aborting.")
+ }
+
+ HEADERS += $$MODULE_VERSION_HEADER
+}
+
+# Create a module master header
+MODULE_MASTER_HEADER = $$MODULE_BASE_OUTDIR/include/$$TARGET/$$TARGET
+!build_pass {
+ MODULE_MASTER_HEADER_CONT = \
+ "/* This file was generated by qmake with the info from $${_PRO_FILE_}. */" \
+ "$${LITERAL_HASH}ifndef QT_$${ucmodule}_MODULE_H" \
+ "$${LITERAL_HASH}define QT_$${ucmodule}_MODULE_H"
+ for(dep, MODULE_DEPENDS) {
+ depname = $$eval(QT.$${dep}.name)
+ MODULE_MASTER_HEADER_CONT += "$${LITERAL_HASH}include <$$depname/$$depname>"
+ }
+ for(hdr, SYNCQT.HEADER_FILES): \
+ shouldMasterInclude($$hdr): \
+ MODULE_MASTER_HEADER_CONT += "$${LITERAL_HASH}include \"$$replace(hdr, .*/, )\""
+ MODULE_MASTER_HEADER_CONT += "$${LITERAL_HASH}endif"
+ write_file($$MODULE_MASTER_HEADER, MODULE_MASTER_HEADER_CONT)|error("Aborting.")
+}
+SYNCQT.HEADER_FILES += $$MODULE_MASTER_HEADER
+
+CONFIG += qt_install_headers