diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2017-05-02 14:44:44 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2017-05-04 09:40:48 +0000 |
commit | 50acc8680490319c8fe45615c8d6521f0101728b (patch) | |
tree | 6d99ba428dbc28e11adc22ed4795a3ba9fa894b6 /qmake | |
parent | 877ef0594d94f48bf063446b1f8a4b5e1941a8cd (diff) |
Simplify built-in qmake install command
As the directory installation command also works with files as a source
we can unify the external commands, resulting in simpler command lines.
Change-Id: I65013626eedbdb3ce1c77ed230d46edd1603b986
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/generators/makefile.cpp | 26 | ||||
-rw-r--r-- | qmake/generators/unix/unixmake.cpp | 8 | ||||
-rw-r--r-- | qmake/generators/win32/winmakefile.cpp | 5 | ||||
-rw-r--r-- | qmake/main.cpp | 29 |
4 files changed, 31 insertions, 37 deletions
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index c76708285a..d3221b7a25 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -1287,12 +1287,10 @@ MakefileGenerator::writeInstalls(QTextStream &t, bool noBuild) dst_file += Option::dir_sep; dst_file += fi.fileName(); QString cmd; - if (fi.isDir()) - cmd = "-$(QINSTALL_DIR)"; - else if (is_target || fi.isExecutable()) - cmd = "-$(QINSTALL_PROGRAM)"; + if (is_target || (!fi.isDir() && fi.isExecutable())) + cmd = QLatin1String("-$(QINSTALL_PROGRAM)"); else - cmd = "-$(QINSTALL_FILE)"; + cmd = QLatin1String("-$(QINSTALL)"); cmd += " " + escapeFilePath(wild) + " " + escapeFilePath(dst_file); inst << cmd; if (!project->isActiveConfig("debug_info") && !project->isActiveConfig("nostrip") && @@ -1307,17 +1305,14 @@ MakefileGenerator::writeInstalls(QTextStream &t, bool noBuild) QDir::NoDotAndDotDot | QDir::AllEntries); if (installConfigValues.contains("no_check_exist") && files.isEmpty()) { QString dst_file = filePrefixRoot(root, dst_dir); - QString cmd; if (!dst_file.endsWith(Option::dir_sep)) dst_file += Option::dir_sep; dst_file += filestr; - if (installConfigValues.contains("directory")) { - cmd = QLatin1String("-$(QINSTALL_DIR)"); - } else if (installConfigValues.contains("executable")) { + QString cmd; + if (installConfigValues.contains("executable")) cmd = QLatin1String("-$(QINSTALL_PROGRAM)"); - } else { - cmd = QLatin1String("-$(QINSTALL_FILE)"); - } + else + cmd = QLatin1String("-$(QINSTALL)"); cmd += " " + escapeFilePath(wild) + " " + escapeFilePath(dst_file); inst << cmd; uninst.append(rm_dir_contents + " " + escapeFilePath(filePrefixRoot(root, fileFixify(dst_dir + filestr, FileFixifyAbsolute, false)))); @@ -1330,7 +1325,7 @@ MakefileGenerator::writeInstalls(QTextStream &t, bool noBuild) if (!dst_file.endsWith(Option::dir_sep)) dst_file += Option::dir_sep; dst_file += fi.fileName(); - QString cmd = QString(fi.isDir() ? "-$(QINSTALL_DIR)" : "-$(QINSTALL_FILE)") + " " + + QString cmd = QLatin1String("-$(QINSTALL) ") + escapeFilePath(dirstr + file) + " " + escapeFilePath(dst_file); inst << cmd; if (!project->isActiveConfig("debug_info") && !project->isActiveConfig("nostrip") && @@ -2242,9 +2237,8 @@ MakefileGenerator::writeDefaultVariables(QTextStream &t) t << "INSTALL_FILE = " << var("QMAKE_INSTALL_FILE") << endl; t << "INSTALL_PROGRAM = " << var("QMAKE_INSTALL_PROGRAM") << endl; t << "INSTALL_DIR = " << var("QMAKE_INSTALL_DIR") << endl; - t << "QINSTALL_FILE = " << var("QMAKE_QMAKE") << " -install qinstall file" << endl; - t << "QINSTALL_PROGRAM = " << var("QMAKE_QMAKE") << " -install qinstall program" << endl; - t << "QINSTALL_DIR = " << var("QMAKE_QMAKE") << " -install qinstall directory" << endl; + t << "QINSTALL = " << var("QMAKE_QMAKE") << " -install qinstall" << endl; + t << "QINSTALL_PROGRAM = " << var("QMAKE_QMAKE") << " -install qinstall -exe" << endl; t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl; t << "SYMLINK = " << var("QMAKE_SYMBOLIC_LINK") << endl; t << "DEL_DIR = " << var("QMAKE_DEL_DIR") << endl; diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp index 20318f120c..b86594d191 100644 --- a/qmake/generators/unix/unixmake.cpp +++ b/qmake/generators/unix/unixmake.cpp @@ -600,7 +600,7 @@ UnixMakefileGenerator::defaultInstall(const QString &t) dst = escapeFilePath(filePrefixRoot(root, targetdir + src.section('/', -1))); if(!ret.isEmpty()) ret += "\n\t"; - ret += "-$(QINSTALL_FILE) " + escapeFilePath(Option::fixPathToTargetOS(src, false)) + ' ' + dst; + ret += "-$(QINSTALL) " + escapeFilePath(Option::fixPathToTargetOS(src, false)) + ' ' + dst; if(!uninst.isEmpty()) uninst.append("\n\t"); uninst.append("-$(DEL_FILE) " + dst); @@ -636,9 +636,9 @@ UnixMakefileGenerator::defaultInstall(const QString &t) QString copy_cmd; if (bundle == SolidBundle) { - copy_cmd += "-$(QINSTALL_DIR) " + src_targ + ' ' + plain_targ; + copy_cmd += "-$(QINSTALL) " + src_targ + ' ' + plain_targ; } else if (project->first("TEMPLATE") == "lib" && project->isActiveConfig("staticlib")) { - copy_cmd += "-$(QINSTALL_FILE) " + src_targ + ' ' + dst_targ; + copy_cmd += "-$(QINSTALL) " + src_targ + ' ' + dst_targ; } else if (!isAux) { if (bundle == SlicedBundle) { if (!ret.isEmpty()) @@ -698,7 +698,7 @@ UnixMakefileGenerator::defaultInstall(const QString &t) ret += "\n\t"; ret += mkdir_p_asstring("\"`dirname " + dst + "`\"", false) + "\n\t"; ret += "-$(DEL_FILE) " + dst + "\n\t"; // Can't overwrite symlinks to directories - ret += "-$(QINSTALL_DIR) " + escapeFilePath(src) + " " + dst; + ret += "-$(QINSTALL) " + escapeFilePath(src) + " " + dst; if (!uninst.isEmpty()) uninst.append("\n\t"); uninst.append("-$(DEL_FILE) " + dst); diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index 2013698c99..6f2f43c03c 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -530,9 +530,8 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t) t << "INSTALL_FILE = " << var("QMAKE_INSTALL_FILE") << endl; t << "INSTALL_PROGRAM = " << var("QMAKE_INSTALL_PROGRAM") << endl; t << "INSTALL_DIR = " << var("QMAKE_INSTALL_DIR") << endl; - t << "QINSTALL_FILE = " << var("QMAKE_QMAKE") << " -install qinstall file" << endl; - t << "QINSTALL_PROGRAM = " << var("QMAKE_QMAKE") << " -install qinstall program" << endl; - t << "QINSTALL_DIR = " << var("QMAKE_QMAKE") << " -install qinstall directory" << endl; + t << "QINSTALL = " << var("QMAKE_QMAKE") << " -install qinstall" << endl; + t << "QINSTALL_PROGRAM = " << var("QMAKE_QMAKE") << " -install qinstall -exe" << endl; t << endl; t << "####### Output directory\n\n"; diff --git a/qmake/main.cpp b/qmake/main.cpp index f25b128d03..13b18d018a 100644 --- a/qmake/main.cpp +++ b/qmake/main.cpp @@ -273,7 +273,7 @@ static int installFile(const QString &source, const QString &target, bool exe = return 0; } -static int installDirectory(const QString &source, const QString &target) +static int installFileOrDirectory(const QString &source, const QString &target) { QFileInfo fi(source); if (false) { @@ -299,7 +299,7 @@ static int installDirectory(const QString &source, const QString &target) const QFileInfo &entry = it.fileInfo(); const QString &entryTarget = target + QDir::separator() + entry.fileName(); - const int recursionResult = installDirectory(entry.filePath(), entryTarget); + const int recursionResult = installFileOrDirectory(entry.filePath(), entryTarget); if (recursionResult != 0) return recursionResult; } @@ -313,23 +313,24 @@ static int installDirectory(const QString &source, const QString &target) static int doQInstall(int argc, char **argv) { - if (argc != 3) { - fprintf(stderr, "Error: this qinstall command requires exactly three arguments (type, source, destination)\n"); + bool installExecutable = false; + if (argc == 3 && !strcmp(argv[0], "-exe")) { + installExecutable = true; + --argc; + ++argv; + } + + if (argc != 2 && !installExecutable) { + fprintf(stderr, "Error: usage: [-exe] source target\n"); return 3; } - const QString source = QString::fromLocal8Bit(argv[1]); - const QString target = QString::fromLocal8Bit(argv[2]); + const QString source = QString::fromLocal8Bit(argv[0]); + const QString target = QString::fromLocal8Bit(argv[1]); - if (!strcmp(argv[0], "file")) - return installFile(source, target); - if (!strcmp(argv[0], "program")) + if (installExecutable) return installFile(source, target, /*exe=*/true); - if (!strcmp(argv[0], "directory")) - return installDirectory(source, target); - - fprintf(stderr, "Error: Unsupported qinstall command type %s\n", argv[0]); - return 3; + return installFileOrDirectory(source, target); } |