diff options
Diffstat (limited to 'mkspecs/features/exclusive_builds.prf')
-rw-r--r-- | mkspecs/features/exclusive_builds.prf | 109 |
1 files changed, 27 insertions, 82 deletions
diff --git a/mkspecs/features/exclusive_builds.prf b/mkspecs/features/exclusive_builds.prf index c45ff22c06..4d88dcd15e 100644 --- a/mkspecs/features/exclusive_builds.prf +++ b/mkspecs/features/exclusive_builds.prf @@ -1,92 +1,37 @@ -# fixExclusiveOutputDirs(1config, 2config) -# Change all output paths that references 2config to have the string 1config in them -defineTest(fixExclusiveOutputDirs) { - firstBuild = $$1 - secondBuild = $$2 - count(ARGS, 2, greaterThan):isEqual($$list($$lower($$3)), false):appendFirstBuild = false - else:appendFirstBuild = true - isEmpty(QMAKE_DIR_REPLACE):QMAKE_DIR_REPLACE += OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR - lessThan(firstBuild, $$secondBuild):eval($${firstBuild}_and_$${secondBuild}_target:QMAKE_DIR_REPLACE += DESTDIR) - else:eval($${secondBuild}_and_$${firstBuild}_target:QMAKE_DIR_REPLACE += DESTDIR) - for(fix, QMAKE_DIR_REPLACE) { - isEmpty($$fix)|isEqual($$fix, .) { - eval($$fix = $${firstBuild}) - } else:contains($$list($$first($$fix)), .*$${secondBuild}.*) { - eval($$fix ~= s/$${secondBuild}/$${firstBuild}/gi) - } else:isEqual(appendFirstBuild, true):!contains($$list($$first($$fix)), .*$${firstBuild}.*) { - contains($$list($${first($$fix)}), .*/$):eval($$fix = $${first($$fix)}$${firstBuild}) - else:eval($$fix = $${first($$fix)}-$${firstBuild}) - } - export($$fix) - } - return(true) -} - -# addExclusiveBuilds(1config, 1name, 2config, 2name) -# Adds two BUILDS which are exclusive to each other. defineTest(addExclusiveBuilds) { - firstBuild = $$1 - firstBuildName = $$2 - secondBuild = $$3 - secondBuildName = $$4 + lessThan(ARGC, 2): \ + error("addExclusiveBuilds() requires at least two arguments") - contains(TEMPLATE, subdirs) { - eval(sub_$${firstBuildName}.target = $$firstBuild) - export(sub_$${firstBuildName}.target) - eval(sub_$${firstBuildName}.CONFIG = recursive) - export(sub_$${firstBuildName}.CONFIG) - eval(sub_$${secondBuildName}.target = $$secondBuild) - export(sub_$${secondBuildName}.target) - eval(sub_$${secondBuildName}.CONFIG = recursive) - export(sub_$${secondBuildName}.CONFIG) - QMAKE_EXTRA_TARGETS += sub_$${firstBuildName} sub_$${secondBuildName} - export(QMAKE_EXTRA_TARGETS) - } else:!build_pass { - first_BUILDS = - second_BUILDS = - suffix_BUILDS = Build + !$$join(ARGS, _and_):!fix_output_dirs: \ + return(true) - isEmpty(BUILDS): BUILDPERMUTATIONS = $$suffix_BUILDS - else: BUILDPERMUTATIONS = $$BUILDS + for(build, ARGS) { + isEmpty($${build}.name) { + $${build}.name = $$title($$build) + export($${build}.name) + } + isEmpty($${build}.target) { + $${build}.target = $$lower($$build) + export($${build}.target) + } + isEmpty($${build}.dir_affix) { + $${build}.dir_affix = $$lower($$build) + export($${build}.dir_affix) + } - for(permutation, BUILDPERMUTATIONS) { - permutation ~= s/$${suffix_BUILDS}$// - isEmpty(permutation): permutationName = - else: permutationName = -$$permutation - # Makefile target rule - eval($${firstBuildName}$${permutation}.target = $${firstBuild}$$lower($${permutationName})) - export($${firstBuildName}$${permutation}.target) - # IDE name - eval($${firstBuildName}$${permutation}.name = $${firstBuildName}$${permutationName}) - export($${firstBuildName}$${permutation}.name) - # prl import CONFIG option - eval($${firstBuildName}$${permutation}.PRL_CONFIG = $${firstBuild}$${permutation}) - export($${firstBuildName}$${permutation}.PRL_CONFIG) - # Individual CONFIG option - eval($${firstBuildName}$${permutation}.CONFIG = $${firstBuild} $${firstBuildName}Build $$eval($${permutation}.CONFIG)) - export($${firstBuildName}$${permutation}.CONFIG) + $${build}.exclusive = $$ARGS + export($${build}.exclusive) - eval($${secondBuildName}$${permutation}.target = $${secondBuild}$$lower($${permutationName})) - export($${secondBuildName}$${permutation}.target) - eval($${secondBuildName}$${permutation}.name = $${secondBuildName}$${permutationName}) - export($${secondBuildName}$${permutation}.name) - eval($${secondBuildName}$${permutation}.PRL_CONFIG = $${secondBuild}$${permutation}) - export($${secondBuildName}$${permutation}.PRL_CONFIG) - eval($${secondBuildName}$${permutation}.CONFIG = $${secondBuild} $${secondBuildName}Build $$eval($${permutation}.CONFIG)) - export($${secondBuildName}$${permutation}.CONFIG) + QMAKE_EXCLUSIVE_BUILDS += $$build + } - first_BUILDS += $${firstBuildName}$${permutation} - second_BUILDS += $${secondBuildName}$${permutation} - } + CONFIG *= exclusive_builds + export(CONFIG) - # A mutual exclusive block. - CONFIG($${firstBuild}, $${firstBuild}|$${secondBuild}): BUILDS = $$first_BUILDS $$second_BUILDS - else: BUILDS = $$second_BUILDS $$first_BUILDS - export(BUILDS) - } else { - eval($${firstBuildName}Build:fixExclusiveOutputDirs($$firstBuild, $$secondBuild, false)) - eval($${secondBuildName}Build:fixExclusiveOutputDirs($$secondBuild, $$firstBuild, false)) - } + export(QMAKE_EXCLUSIVE_BUILDS) return(true) } + +# Default directories to process +QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR DESTDIR |