1 TEMPLATE = lib 2 TARGET = dummy 3 4 include(headers.pri) 5 6 CONFIG -= debug_and_release 7 8 DESTDIR = ../../../include/QtWebKit 9 10 QUOTE = "" 11 DOUBLE_ESCAPED_QUOTE = "" 12 ESCAPE = "" 13 win32-msvc*|symbian { 14 ESCAPE = "^" 15 } else:win32-g++:isEmpty(QMAKE_SH) { 16 # MinGW's make will run makefile commands using sh, even if make 17 # was run from the Windows shell, if it finds sh in the path. 18 ESCAPE = "^" 19 } else { 20 QUOTE = "\'" 21 DOUBLE_ESCAPED_QUOTE = "\\\'" 22 } 23 24 qtheader_module.target = $${DESTDIR}/QtWebKit 25 qtheader_module.depends = $${_PRO_FILE_} 26 qtheader_module.commands = echo $${QUOTE}$${LITERAL_HASH}ifndef QT_QTWEBKIT_MODULE_H$${QUOTE} > $${qtheader_module.target} && 27 qtheader_module.commands += echo $${QUOTE}$${LITERAL_HASH}define QT_QTWEBKIT_MODULE_H$${QUOTE} >> $${qtheader_module.target} && 28 qtheader_module.commands += echo $${QUOTE}$${LITERAL_HASH}include $${ESCAPE}<QtNetwork/QtNetwork$${ESCAPE}>$${QUOTE} >> $${qtheader_module.target} && 29 WEBKIT_CLASS_HEADERS = $${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}PWD/QtWebKit 30 31 regex = ".*\sclass\sQWEBKIT_EXPORT\s(\w+)\s(.*)" 32 33 for(HEADER, WEBKIT_API_HEADERS) { 34 qtheader_module.depends += $$HEADER 35 # Quotes need to be escaped once more when placed in eval() 36 eval(qtheader_module.commands += echo $${DOUBLE_ESCAPED_QUOTE}\$${LITERAL_HASH}include \\\"$$basename(HEADER)\\\"$${DOUBLE_ESCAPED_QUOTE} >> $${qtheader_module.target} &&) 37 38 HEADER_NAME = $$basename(HEADER) 39 HEADER_TARGET = $$replace(HEADER_NAME, [^a-zA-Z0-9_], -) 40 HEADER_TARGET = "qtheader-$${HEADER_TARGET}" 41 42 eval($${HEADER_TARGET}.target = $${DESTDIR}/$${HEADER_NAME}) 43 eval($${HEADER_TARGET}.depends = $$HEADER) 44 eval($${HEADER_TARGET}.commands = echo $${DOUBLE_ESCAPED_QUOTE}\$${LITERAL_HASH}include \\\"$$HEADER\\\"$${DOUBLE_ESCAPED_QUOTE} > $$eval($${HEADER_TARGET}.target)) 45 46 QMAKE_EXTRA_TARGETS += $$HEADER_TARGET 47 48 src_words = $$cat($$HEADER) 49 # Really make sure we're dealing with words 50 src_words = $$split(src_words, " ") 51 52 src = $$join(src_words, $${LITERAL_WHITESPACE}) 53 for(ever) { 54 # Looking up by line is faster, so we try that first 55 res = $$find(src_words, "QWEBKIT_EXPORT") 56 isEmpty(res):break() 57 58 # Then do a slow lookup to ensure we're dealing with an exported class 59 res = $$find(src, $$regex) 60 isEmpty(res):break() 61 62 exp = $$replace(src, $$regex, "EXPORTED_CLASS = \1") 63 eval($$exp) 64 65 CLASS_TARGET = "qtheader_$${EXPORTED_CLASS}" 66 67 eval($${CLASS_TARGET}.target = $${DESTDIR}/$${EXPORTED_CLASS}) 68 eval($${CLASS_TARGET}.depends = $$eval($${HEADER_TARGET}.target)) 69 eval($${CLASS_TARGET}.commands = echo $${DOUBLE_ESCAPED_QUOTE}\$${LITERAL_HASH}include \\\"$$basename(HEADER)\\\"$${DOUBLE_ESCAPED_QUOTE} > $$eval($${CLASS_TARGET}.target)) 70 71 QMAKE_EXTRA_TARGETS += $$CLASS_TARGET 72 WEBKIT_CLASS_HEADERS += $${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}PWD/$${EXPORTED_CLASS} 73 74 generated_files.depends += $$eval($${CLASS_TARGET}.target) 75 qtheader_pri.depends += $$eval($${CLASS_TARGET}.target) 76 77 # Qt's QRegExp does not support inline non-greedy matching, 78 # so we'll have to work around it by updating the haystack 79 src = $$replace(src, $$regex, "\2") 80 src_words = $$join(src, $${LITERAL_WHITESPACE}) 81 } 82 } 83 84 qtheader_module.commands += echo $${QUOTE}$${LITERAL_HASH}endif // QT_QTWEBKIT_MODULE_H$${QUOTE} >> $${qtheader_module.target} 85 QMAKE_EXTRA_TARGETS += qtheader_module 86 87 qtheader_pri.target = $${DESTDIR}/classheaders.pri 88 qtheader_pri.depends = $${WEBKIT_API_HEADERS} $${_PRO_FILE_} 89 qtheader_pri.commands = echo $${QUOTE}WEBKIT_CLASS_HEADERS = $${WEBKIT_CLASS_HEADERS}$${QUOTE} > $${qtheader_pri.target} 90 QMAKE_EXTRA_TARGETS += qtheader_pri 91 92 generated_files.depends += $${qtheader_module.target} $${qtheader_pri.target} 93 QMAKE_EXTRA_TARGETS += generated_files 94 95 96 97