| 1 | # fixExclusiveOutputDirs(1config, 2config)
|
|---|
| 2 | # Change all output paths that references 2config to have the string 1config in them
|
|---|
| 3 | defineTest(fixExclusiveOutputDirs) {
|
|---|
| 4 | unset(firstBuild)
|
|---|
| 5 | unset(secondBuild)
|
|---|
| 6 | unset(appendFirstBuild)
|
|---|
| 7 | firstBuild = $$1
|
|---|
| 8 | secondBuild = $$2
|
|---|
| 9 | count(ARGS, 2, greaterThan):isEqual($$list($$lower($$3)), false):appendFirstBuild = false
|
|---|
| 10 | else:appendFirstBuild = true
|
|---|
| 11 |
|
|---|
| 12 | isEmpty(QMAKE_DIR_REPLACE):QMAKE_DIR_REPLACE += OBJECTS_DIR MOC_DIR RCC_DIR
|
|---|
| 13 | lessThan(firstBuild, $$secondBuild):eval($${firstBuild}_and_$${secondBuild}_target:QMAKE_DIR_REPLACE += DESTDIR)
|
|---|
| 14 | else:eval($${secondBuild}_and_$${firstBuild}_target:QMAKE_DIR_REPLACE += DESTDIR)
|
|---|
| 15 | for(fix, QMAKE_DIR_REPLACE) {
|
|---|
| 16 | isEmpty($$fix)|isEqual($$fix, .) {
|
|---|
| 17 | eval($$fix = $${firstBuild})
|
|---|
| 18 | } else:contains($$list($$first($$fix)), .*$${secondBuild}.*) {
|
|---|
| 19 | eval($$fix ~= s/$${secondBuild}/$${firstBuild}/gi)
|
|---|
| 20 | } else:isEqual(appendFirstBuild, true):!contains($$list($$first($$fix)), .*$${firstBuild}.*) {
|
|---|
| 21 | contains($$list($${first($$fix)}), .*/$):eval($$fix = $${first($$fix)}$${firstBuild})
|
|---|
| 22 | } else {
|
|---|
| 23 | eval($$fix = $${first($$fix)}-$${firstBuild})
|
|---|
| 24 | }
|
|---|
| 25 | export($$fix)
|
|---|
| 26 | }
|
|---|
| 27 | return(true)
|
|---|
| 28 | }
|
|---|
| 29 |
|
|---|
| 30 | # addExclusiveBuilds(1config, 1name, 2config, 2name)
|
|---|
| 31 | # Adds two BUILDS which are exclusive to each other.
|
|---|
| 32 | defineTest(addExclusiveBuilds) {
|
|---|
| 33 | unset(firstBuild)
|
|---|
| 34 | unset(firstBuildName)
|
|---|
| 35 | unset(secondBuild)
|
|---|
| 36 | unset(secondBuildName)
|
|---|
| 37 |
|
|---|
| 38 | firstBuild = $$1
|
|---|
| 39 | firstBuildName = $$2
|
|---|
| 40 | secondBuild = $$3
|
|---|
| 41 | secondBuildName = $$4
|
|---|
| 42 |
|
|---|
| 43 | contains(TEMPLATE, subdirs) {
|
|---|
| 44 | eval(sub_$${firstBuildName}.target = $$firstBuild)
|
|---|
| 45 | export(sub_$${firstBuildName}.target)
|
|---|
| 46 | eval(sub_$${firstBuildName}.CONFIG = recursive)
|
|---|
| 47 | export(sub_$${firstBuildName}.CONFIG)
|
|---|
| 48 | eval(sub_$${secondBuildName}.target = $$secondBuild)
|
|---|
| 49 | export(sub_$${secondBuildName}.target)
|
|---|
| 50 | eval(sub_$${secondBuildName}.CONFIG = recursive)
|
|---|
| 51 | export(sub_$${secondBuildName}.CONFIG)
|
|---|
| 52 | QMAKE_EXTRA_TARGETS += sub_$${firstBuildName} sub_$${secondBuildName}
|
|---|
| 53 | export(QMAKE_EXTRA_TARGETS)
|
|---|
| 54 | } else:!build_pass {
|
|---|
| 55 | first_BUILDS =
|
|---|
| 56 | second_BUILDS =
|
|---|
| 57 | suffix_BUILDS = Build
|
|---|
| 58 |
|
|---|
| 59 | isEmpty(BUILDS): BUILDPERMUTATIONS = $$suffix_BUILDS
|
|---|
| 60 | else: BUILDPERMUTATIONS = $$BUILDS
|
|---|
| 61 |
|
|---|
| 62 | for(permutation, BUILDPERMUTATIONS) {
|
|---|
| 63 | permutation ~= s/$${suffix_BUILDS}$//
|
|---|
| 64 | isEmpty(permutation): permutationName =
|
|---|
| 65 | else: permutationName = -$$permutation
|
|---|
| 66 | # Makefile target rule
|
|---|
| 67 | eval($${firstBuildName}$${permutation}.target = $${firstBuild}$$lower($${permutationName}))
|
|---|
| 68 | export($${firstBuildName}$${permutation}.target)
|
|---|
| 69 | # IDE name
|
|---|
| 70 | eval($${firstBuildName}$${permutation}.name = $${firstBuildName}$${permutationName})
|
|---|
| 71 | export($${firstBuildName}$${permutation}.name)
|
|---|
| 72 | # prl import CONFIG option
|
|---|
| 73 | eval($${firstBuildName}$${permutation}.PRL_CONFIG = $${firstBuild}$${permutation})
|
|---|
| 74 | export($${firstBuildName}$${permutation}.PRL_CONFIG)
|
|---|
| 75 | # Individual CONFIG option
|
|---|
| 76 | eval($${firstBuildName}$${permutation}.CONFIG = $${firstBuild} $${firstBuildName}Build $$eval($${permutation}.CONFIG))
|
|---|
| 77 | export($${firstBuildName}$${permutation}.CONFIG)
|
|---|
| 78 |
|
|---|
| 79 | eval($${secondBuildName}$${permutation}.target = $${secondBuild}$$lower($${permutationName}))
|
|---|
| 80 | export($${secondBuildName}$${permutation}.target)
|
|---|
| 81 | eval($${secondBuildName}$${permutation}.name = $${secondBuildName}$${permutationName})
|
|---|
| 82 | export($${secondBuildName}$${permutation}.name)
|
|---|
| 83 | eval($${secondBuildName}$${permutation}.PRL_CONFIG = $${secondBuild}$${permutation})
|
|---|
| 84 | export($${secondBuildName}$${permutation}.PRL_CONFIG)
|
|---|
| 85 | eval($${secondBuildName}$${permutation}.CONFIG = $${secondBuild} $${secondBuildName}Build $$eval($${permutation}.CONFIG))
|
|---|
| 86 | export($${secondBuildName}$${permutation}.CONFIG)
|
|---|
| 87 |
|
|---|
| 88 | first_BUILDS += $${firstBuildName}$${permutation}
|
|---|
| 89 | second_BUILDS += $${secondBuildName}$${permutation}
|
|---|
| 90 | }
|
|---|
| 91 |
|
|---|
| 92 | # A mutual exclusive block.
|
|---|
| 93 | CONFIG($${firstBuild}, $${firstBuild}|$${secondBuild}): BUILDS = $$first_BUILDS $$second_BUILDS
|
|---|
| 94 | else: BUILDS = $$second_BUILDS $$first_BUILDS
|
|---|
| 95 | export(BUILDS)
|
|---|
| 96 | } else {
|
|---|
| 97 | eval($${firstBuildName}Build:fixExclusiveOutputDirs($$firstBuild, $$secondBuild, false))
|
|---|
| 98 | eval($${secondBuildName}Build:fixExclusiveOutputDirs($$secondBuild, $$firstBuild, false))
|
|---|
| 99 | }
|
|---|
| 100 | return(true)
|
|---|
| 101 | }
|
|---|