Home | History | Annotate | Download | only in Api
      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