summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/file_copies.prf
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs/features/file_copies.prf')
-rw-r--r--mkspecs/features/file_copies.prf26
1 files changed, 21 insertions, 5 deletions
diff --git a/mkspecs/features/file_copies.prf b/mkspecs/features/file_copies.prf
index f679129e03..6df294212c 100644
--- a/mkspecs/features/file_copies.prf
+++ b/mkspecs/features/file_copies.prf
@@ -18,13 +18,24 @@ defineReplace(qtStripProPwd) {
for (cp, COPIES) {
isEmpty($${cp}.files): next()
pfx = copy_$${cp}
- for (f, $${cp}.files): \
- $${pfx}.files += $$absolute_path($$f, $$_PRO_FILE_PWD_)
+ notdir = false
+ dir = false
+ for (f, $${cp}.files) {
+ fil = $$absolute_path($$f, $$_PRO_FILE_PWD_)
+ tfiles = $$files($$fil/*)
+ isEmpty(tfiles): \
+ notdir = true
+ else: \
+ dir = true
+ $${pfx}.files += $$fil
+ }
+ $$dir:$$notdir: \
+ error("COPIES entry $$cp lists both files and directories.")
path = $$eval($${cp}.path)
- isEmpty(path): error("COPY $cp defines no .path")
+ isEmpty(path): error("COPIES entry $$cp defines no .path")
base = $$eval($${cp}.base)
isEmpty(base) {
- $${pfx}.output = $$path/${QMAKE_FILE_BASE}${QMAKE_FILE_EXT}
+ $${pfx}.output = $$path/${QMAKE_FILE_IN_NAME}
} else: isEqual(base, $$_PRO_FILE_PWD_) {
$${pfx}.output = $$path/${QMAKE_FUNC_FILE_IN_qtStripProPwd}
} else {
@@ -34,7 +45,12 @@ for (cp, COPIES) {
$${pfx}.output = $$path/${QMAKE_FUNC_FILE_IN_qtStripSrcDir_$$cp}
}
$${pfx}.input = $${pfx}.files
- $${pfx}.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
+ !$$dir: \
+ $${pfx}.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT_PATH}
+ else: !copy_dir_files: \
+ $${pfx}.commands = $$QMAKE_COPY_DIR ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT_PATH}
+ else: \
+ $${pfx}.commands = $$QMAKE_COPY_DIR ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
$${pfx}.name = COPY ${QMAKE_FILE_IN}
$${pfx}.CONFIG = no_link no_clean target_predeps
QMAKE_EXTRA_COMPILERS += $${pfx}