exclusive_builds.prf
100 lines
| 4.5 KiB
| application/pics-rules
|
TextLexer
r47 | # fixExclusiveOutputDirs(1config, 2config) | |||
# Change all output paths that references 2config to have the string 1config in them | ||||
defineTest(fixExclusiveOutputDirs) { | ||||
unset(firstBuild) | ||||
unset(secondBuild) | ||||
unset(appendFirstBuild) | ||||
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 | ||||
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) { | ||||
unset(firstBuild) | ||||
unset(firstBuildName) | ||||
unset(secondBuild) | ||||
unset(secondBuildName) | ||||
firstBuild = $$1 | ||||
firstBuildName = $$2 | ||||
secondBuild = $$3 | ||||
secondBuildName = $$4 | ||||
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 | ||||
isEmpty(BUILDS): BUILDPERMUTATIONS = $$suffix_BUILDS | ||||
else: BUILDPERMUTATIONS = $$BUILDS | ||||
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) | ||||
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) | ||||
first_BUILDS += $${firstBuildName}$${permutation} | ||||
second_BUILDS += $${secondBuildName}$${permutation} | ||||
} | ||||
# 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)) | ||||
} | ||||
return(true) | ||||
} | ||||