diff options
Diffstat (limited to 'mkspecs/features/qt_module_headers.prf')
-rw-r--r-- | mkspecs/features/qt_module_headers.prf | 61 |
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 |