diff options
Diffstat (limited to 'mkspecs/features')
-rw-r--r-- | mkspecs/features/c++11.prf | 17 | ||||
-rw-r--r-- | mkspecs/features/c++14.prf | 12 | ||||
-rw-r--r-- | mkspecs/features/lex.prf | 21 | ||||
-rw-r--r-- | mkspecs/features/plugin_bundle.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/qt.prf | 11 | ||||
-rw-r--r-- | mkspecs/features/qt_common.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/resources.prf | 60 | ||||
-rw-r--r-- | mkspecs/features/yacc.prf | 12 |
8 files changed, 108 insertions, 29 deletions
diff --git a/mkspecs/features/c++11.prf b/mkspecs/features/c++11.prf index 32eaca4a9b..c8a86548ee 100644 --- a/mkspecs/features/c++11.prf +++ b/mkspecs/features/c++11.prf @@ -1,10 +1,9 @@ -QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11 -QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CXXFLAGS_CXX11 -QMAKE_LFLAGS += $$QMAKE_LFLAGS_CXX11 - -contains(QMAKE_LFLAGS, -stdlib=libc++) { - equals(QMAKE_MACOSX_DEPLOYMENT_TARGET, 10.6): \ - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7 - contains(QMAKE_IOS_DEPLOYMENT_TARGET, ^4.*): \ - QMAKE_IOS_DEPLOYMENT_TARGET = 5.0 +strict_c++|isEmpty(QMAKE_CXXFLAGS_GNUCXX11) { + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_CXX11 + QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CXXFLAGS_CXX11 + QMAKE_LFLAGS += $$QMAKE_LFLAGS_CXX11 +} else { + QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_GNUCXX11 + QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CXXFLAGS_GNUCXX11 + QMAKE_LFLAGS += $$QMAKE_LFLAGS_GNUCXX11 } diff --git a/mkspecs/features/c++14.prf b/mkspecs/features/c++14.prf index a54d11840d..076458560d 100644 --- a/mkspecs/features/c++14.prf +++ b/mkspecs/features/c++14.prf @@ -2,15 +2,21 @@ intel_icc { # ICC does not support C++14 yet } else: clang { # Clang has supported -std=c++1y since version 3.2 - greaterThan(QT_CLANG_MAJOR_VERSION, 3)|greaterThan(QT_CLANG_MINOR_VERSION, 1): \ + greaterThan(QT_CLANG_MAJOR_VERSION, 3)|greaterThan(QT_CLANG_MINOR_VERSION, 1) { QMAKE_CXXFLAGS_CXX11 = -std=c++1y + QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++1y + } # Unknown how long Apple Clang has supported -std=c++1y, but at least since XCode 5.0 - greaterThan(QT_APPLE_CLANG_MAJOR_VERSION, 4): \ + greaterThan(QT_APPLE_CLANG_MAJOR_VERSION, 4) { QMAKE_CXXFLAGS_CXX11 = -std=c++1y + QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++1y + } } else: gcc { # GCC has supported -std=c++1y since 4.8 - greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 7): \ + greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 7) { QMAKE_CXXFLAGS_CXX11 = -std=c++1y + QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++1y + } } # Delegate to c++11.prf diff --git a/mkspecs/features/lex.prf b/mkspecs/features/lex.prf index 43d8fbd038..19ffe1932c 100644 --- a/mkspecs/features/lex.prf +++ b/mkspecs/features/lex.prf @@ -10,13 +10,22 @@ } else { lex.variable_out = GENERATED_SOURCES } - isEmpty(QMAKE_LEXFLAGS_MANGLE):QMAKE_LEXFLAGS_MANGLE = -P${QMAKE_FILE_BASE} - QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS - !yacc_no_name_mangle:QMAKE_LEXEXTRAFLAGS += $$QMAKE_LEXFLAGS_MANGLE - lex.commands = $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \ - $$QMAKE_DEL_FILE $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_lex$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) \ - $$QMAKE_MOVE lex.${QMAKE_FILE_BASE}.c $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_lex$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) + contains(QMAKE_LEX, .*flex) { + # GNU flex, we can use -o outfile + lex.commands = $$QMAKE_LEX $$QMAKE_LEXFLAGS --nounistd -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + } else { + # stupid POSIX lex, it only generates a file called lex.yy.c + # or lex.prefix.c if the -P<prefix> option is active + intermediate_file = lex.yy.c + QMAKE_LEXEXTRAFLAGS = $$QMAKE_LEXFLAGS $$QMAKE_LEXFLAGS_MANGLE + + lex.commands = \ + -$(DEL_FILE) ${QMAKE_FILE_OUT}$$escape_expand(\\n\\t) \ + $$QMAKE_LEX $$QMAKE_LEXEXTRAFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \ + $(MOVE) $$intermediate_file ${QMAKE_FILE_OUT} $$escape_expand(\\n\\t) + unset(intermediate_file) + } lex.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_lex$${first(QMAKE_EXT_CPP)} silent:lex.commands = @echo Lex ${QMAKE_FILE_IN} && $$lex.commands diff --git a/mkspecs/features/plugin_bundle.prf b/mkspecs/features/plugin_bundle.prf new file mode 100644 index 0000000000..f3e7294c90 --- /dev/null +++ b/mkspecs/features/plugin_bundle.prf @@ -0,0 +1,2 @@ +# Override mkspec default which creates a shared library +mac: QMAKE_LFLAGS_PLUGIN = -bundle diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index be54d030e7..ce93105f4b 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -252,15 +252,18 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) { # if the plugin is linked statically there is no need to deploy it DEPLOYMENT_PLUGIN -= $$QT_CURRENT_VERIFY } - isEqual(QT_CURRENT_VERIFY, DEPLOYMENT_PLUGIN):shared:if(wince*|winrt): { + + # The following block is currently broken, because qt_plugin_XXX.prf files + # are not generated for dynamic builds. + false:isEqual(QT_CURRENT_VERIFY, DEPLOYMENT_PLUGIN):shared:if(wince*|winrt) { QT_ITEM = debug: QT_ITEM = $${QTPLUG}d4.dll else: QT_ITEM = $${QTPLUG}4.dll - eval(qt_additional_plugin_$${QTPLUG}.files = $$[QT_INSTALL_PLUGINS/get]/$${QT_PLUGINPATH}/$${QT_ITEM}) - eval(qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH}) + qt_additional_plugin_$${QTPLUG}.files = $$[QT_INSTALL_PLUGINS/get]/$${QT_PLUGINPATH}/$${QT_ITEM} + qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH} - DEPLOYMENT *= qt_additional_plugin_$${QTPLUG} + INSTALLS *= qt_additional_plugin_$${QTPLUG} } } } diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf index 55f65b5526..2ed43e5063 100644 --- a/mkspecs/features/qt_common.prf +++ b/mkspecs/features/qt_common.prf @@ -12,7 +12,7 @@ QMAKE_DIR_REPLACE_SANE += DESTDIR CONFIG -= debug_and_release_target -contains(QT_CONFIG, c++11): CONFIG += c++11 +contains(QT_CONFIG, c++11): CONFIG += c++11 strict_c++ contains(TEMPLATE, .*lib) { # module and plugins !host_build:contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols diff --git a/mkspecs/features/resources.prf b/mkspecs/features/resources.prf index 8564731a22..7a38ff8f38 100644 --- a/mkspecs/features/resources.prf +++ b/mkspecs/features/resources.prf @@ -6,6 +6,66 @@ isEmpty(QMAKE_MOD_RCC):QMAKE_MOD_RCC = qrc !contains(QMAKE_RESOURCE_FLAGS, -root):!isEmpty(QMAKE_RESOURCE_ROOT):QMAKE_RESOURCE_FLAGS += -root $$QMAKE_RESOURCE_ROOT !contains(QMAKE_RESOURCE_FLAGS, -name): QMAKE_RESOURCE_FLAGS += -name ${QMAKE_FILE_BASE} +# http://www.w3.org/TR/xml/#syntax +defineReplace(xml_escape) { + 1 ~= s,&,&, + 1 ~= s,\',', + 1 ~= s,\",", + 1 ~= s,<,<, + 1 ~= s,>,>, + return($$1) +} + +RESOURCES += qmake_immediate +for(resource, RESOURCES) { + # Regular case of user qrc file + contains(resource, ".*\.qrc$"): \ + next() + + # Fallback for stand-alone files/directories + !defined($${resource}.files, var) { + !equals(resource, qmake_immediate) { + !exists($$absolute_path($$resource, $$_PRO_FILE_PWD_)): \ + warning("Failure to find: $$resource") + qmake_immediate.files += $$resource + } + RESOURCES -= $$resource + next() + } + + resource_file = $$RCC_DIR/qmake_$${resource}.qrc + + !debug_and_release|build_pass { + # Collection of files, generate qrc file + prefix = $$eval($${resource}.prefix) + isEmpty(prefix): \ + prefix = "/" + + resource_file_content = \ + "<!DOCTYPE RCC><RCC version=\"1.0\">" \ + "<qresource prefix=\"$$xml_escape($$prefix)\">" + + abs_base = $$absolute_path($$eval($${resource}.base), $$_PRO_FILE_PWD_) + + for(file, $${resource}.files) { + abs_path = $$absolute_path($$file, $$_PRO_FILE_PWD_) + alias = $$relative_path($$abs_path, $$abs_base) + resource_file_content += \ + "<file alias=\"$$xml_escape($$alias)\">$$xml_escape($$abs_path)</file>" + } + + resource_file_content += \ + "</qresource>" \ + "</RCC>" + + !write_file($$OUT_PWD/$$resource_file, resource_file_content): \ + error("Aborting.") + } + + RESOURCES -= $$resource + RESOURCES += $$resource_file +} + rcc.input = RESOURCES rcc.name = RCC ${QMAKE_FILE_IN} rcc.depend_command = $$QMAKE_RCC_DEP -list $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} diff --git a/mkspecs/features/yacc.prf b/mkspecs/features/yacc.prf index 4d7e0a381b..22fe4cb0a2 100644 --- a/mkspecs/features/yacc.prf +++ b/mkspecs/features/yacc.prf @@ -9,9 +9,9 @@ isEmpty(QMAKE_YACCFLAGS_MANGLE) { - QMAKE_YACCFLAGS_MANGLE = -p ${QMAKE_FILE_BASE} - QMAKE_YACC_HEADER = y.tab.h - QMAKE_YACC_SOURCE = y.tab.c + QMAKE_YACCFLAGS_MANGLE = -p ${QMAKE_FILE_BASE} -b ${QMAKE_FILE_BASE} + QMAKE_YACC_HEADER = ${QMAKE_FILE_BASE}.tab.h + QMAKE_YACC_SOURCE = ${QMAKE_FILE_BASE}.tab.c } else { QMAKE_YACCFLAGS_MANGLE ~= s/\\$base/${QMAKE_FILE_BASE}/g #backwards compat QMAKE_YACC_HEADER ~= s/\\$base/${QMAKE_FILE_BASE}/g @@ -21,10 +21,10 @@ !yacc_no_name_mangle:QMAKE_YACCDECLFLAGS += $$QMAKE_YACCFLAGS_MANGLE yacc_decl.commands = \ + -$(DEL_FILE) $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) \ $$QMAKE_YACC $$QMAKE_YACCDECLFLAGS ${QMAKE_FILE_IN}$$escape_expand(\\n\\t) \ - $$QMAKE_DEL_FILE $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) \ - $$QMAKE_MOVE $${QMAKE_YACC_HEADER} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)}$$escape_expand(\\n\\t) \ - $$QMAKE_MOVE $${QMAKE_YACC_SOURCE} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) + $(MOVE) $${QMAKE_YACC_HEADER} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)}$$escape_expand(\\n\\t) \ + $(MOVE) $${QMAKE_YACC_SOURCE} $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_CPP)}$$escape_expand(\\n\\t) yacc_decl.output = $${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}_yacc$${first(QMAKE_EXT_H)} silent:yacc_decl.commands = @echo Yacc ${QMAKE_FILE_IN} && $$yacc_decl.commands |