valentina/src/app/puzzle/puzzle.qbs

388 lines
12 KiB
QML
Raw Normal View History

2023-01-06 16:41:45 +01:00
import qbs.FileInfo
2023-06-23 08:55:10 +02:00
import qbs.File
import qbs.Utilities
2023-01-06 16:41:45 +01:00
2023-01-10 09:39:50 +01:00
VToolApp {
2023-01-04 17:31:50 +01:00
Depends { name: "buildconfig" }
Depends { name: "ib"; condition: qbs.targetOS.contains("macos") }
2024-04-13 11:37:11 +02:00
Depends { name: "Qt"; submodules: ["core", "widgets", "svg", "concurrent"] }
2023-01-04 17:31:50 +01:00
Depends { name: "VMiscLib" }
Depends { name: "VLayoutLib" }
Depends { name: "IFCLib" }
Depends { name: "VFormatLib" }
Depends { name: "VWidgetsLib" }
Depends { name: "FervorLib" }
2023-01-27 18:07:24 +01:00
Depends { name: "multibundle"; }
2023-06-27 13:15:21 +02:00
Depends { name: "VGAnalyticsLib" }
Depends { name: "pdftops"; condition: qbs.targetOS.contains("macos") }
2023-01-04 17:31:50 +01:00
// Explicitly link to libcrypto and libssl to avoid error: Failed to load libssl/libcrypto.
2023-08-29 15:51:56 +02:00
// Use moduleProviders.qbspkgconfig.extraPaths to define the missing dependency.
// Explicit linking will help macdeployqt undertsand that we want to see them inside the bundle.
Depends {
name: "libcrypto"
condition: qbs.targetOS.contains("macos") && Utilities.versionCompare(Qt.core.version, "6") >= 0
}
Depends {
name: "libssl"
condition: qbs.targetOS.contains("macos") && Utilities.versionCompare(Qt.core.version, "6") >= 0
}
2023-01-04 17:31:50 +01:00
name: "Puzzle"
buildconfig.appTarget: qbs.targetOS.contains("macos") ? "Puzzle" : "puzzle"
targetName: buildconfig.appTarget
2023-01-27 18:07:24 +01:00
multibundle.targetApps: ["Valentina"]
2023-06-22 17:30:43 +02:00
type: base.concat("install_root_svg_fonts")
2023-01-04 17:31:50 +01:00
2023-02-20 13:54:48 +01:00
Properties {
2024-03-12 15:39:44 +01:00
condition: buildconfig.useConanPackages && buildconfig.conanXercesEnabled && qbs.targetOS.contains("macos") && buildconfig.enableMultiBundle
2023-02-20 13:54:48 +01:00
conan.XercesC.libInstallDir: qbs.installPrefix + "/" + buildconfig.installLibraryPath
conan.XercesC.installLib: true
}
2024-03-12 15:39:44 +01:00
Properties {
condition: buildconfig.useConanPackages && buildconfig.conanCrashReportingEnabled && qbs.targetOS.contains("macos") && buildconfig.enableMultiBundle
conan.crashpad.installBin: true
conan.crashpad.binInstallDir: qbs.installPrefix + "/" + buildconfig.installBinaryPath
}
2023-01-04 17:31:50 +01:00
files: [
"main.cpp",
"vpapplication.cpp",
"vpcommandline.cpp",
"vpcommands.cpp",
"vpmainwindow.cpp",
"vpsettings.cpp",
"vptilefactory.cpp",
"vpapplication.h",
"vpcommandline.h",
"vpcommands.h",
"vpmainwindow.h",
"vpsettings.h",
"vptilefactory.h",
"vpmainwindow.ui",
2023-10-23 15:57:22 +02:00
"vpuzzleshortcutmanager.cpp",
"vpuzzleshortcutmanager.h",
2023-01-04 17:31:50 +01:00
]
Group {
name: "dialogs"
prefix: "dialogs/"
files: [
"configpages/puzzlepreferencesconfigurationpage.cpp",
"configpages/puzzlepreferencespathpage.cpp",
"configpages/puzzlepreferenceslayoutpage.cpp",
"dialogpuzzlepreferences.cpp",
"vpdialogabout.cpp",
"dialogsavemanuallayout.cpp",
"configpages/puzzlepreferencesconfigurationpage.h",
"configpages/puzzlepreferencespathpage.h",
"configpages/puzzlepreferenceslayoutpage.h",
"dialogpuzzlepreferences.h",
"vpdialogabout.h",
"dialogsavemanuallayout.h",
"configpages/puzzlepreferencesconfigurationpage.ui",
"configpages/puzzlepreferencespathpage.ui",
"configpages/puzzlepreferenceslayoutpage.ui",
"dialogpuzzlepreferences.ui",
"vpdialogabout.ui",
"dialogsavemanuallayout.ui",
]
}
Group {
name: "undocommands"
prefix: "undocommands/"
files: [
"vpundoaddsheet.cpp",
"vpundocommand.cpp",
"vpundomovepieceonsheet.cpp",
"vpundooriginmove.cpp",
"vpundopiecemove.cpp",
"vpundopiecerotate.cpp",
"vpundopiecezvaluemove.cpp",
"vpundoremovesheet.cpp",
"vpundoaddsheet.h",
"vpundocommand.h",
"vpundomovepieceonsheet.h",
"vpundooriginmove.h",
"vpundopiecemove.h",
"vpundopiecerotate.h",
"vpundopiecezvaluemove.h",
"vpundoremovesheet.h",
]
}
Group {
name: "xml"
prefix: "xml/"
files: [
"vplayoutfilereader.cpp",
"vplayoutfilewriter.cpp",
"vplayoutliterals.cpp",
"vplayoutfilereader.h",
"vplayoutfilewriter.h",
"vplayoutliterals.h",
]
}
Group {
name: "layout"
prefix: "layout/"
files: [
"layoutdef.cpp",
"vplayout.cpp",
"vplayoutsettings.cpp",
"vppiece.cpp",
"vpsheet.cpp",
"layoutdef.h",
"vplayout.h",
"vplayoutsettings.h",
"vppiece.h",
"vpsheet.h",
]
}
Group {
name: "carousel"
prefix: "carousel/"
files: [
"vpcarrousel.cpp",
"vpcarrouselpiece.cpp",
"vpcarrouselpiecelist.cpp",
"vpmimedatapiece.cpp",
"vpcarrousel.h",
"vpcarrouselpiece.h",
"vpcarrouselpiecelist.h",
"vpmimedatapiece.h",
"vpcarrousel.ui",
]
}
Group {
name: "scene"
prefix: "scene/"
files: [
"vpgraphicspiece.cpp",
"vpgraphicspiececontrols.cpp",
"vpgraphicssheet.cpp",
"vpgraphicstilegrid.cpp",
"vpmaingraphicsview.cpp",
"scenedef.h",
"vpgraphicspiece.h",
"vpgraphicspiececontrols.h",
"vpgraphicssheet.h",
"vpgraphicstilegrid.h",
"vpmaingraphicsview.h",
]
}
Group {
name: "Resources"
prefix: "share/resources/"
files: [
"puzzlecursor.qrc", // Tools cursor icons
2023-01-04 17:31:50 +01:00
"puzzleicon.qrc",
]
}
2023-01-04 20:00:11 +01:00
cpp.includePaths: [product.sourceDirectory]
2023-01-06 16:41:45 +01:00
Export {
Depends { name: "cpp" }
cpp.defines: {
var defines = [];
// TODO: If minimal qbs version is 1.23 replace with FileInfo.executableSuffix()
2023-01-06 16:41:45 +01:00
var extension = qbs.targetOS.contains("windows") ? ".exe" : "";
defines.push('PUZZLE_BUILDDIR="' + FileInfo.joinPaths(exportingProduct.buildDirectory, exportingProduct.targetName + extension) +'"');
2023-01-06 16:41:45 +01:00
return defines;
}
}
2023-01-10 09:15:15 +01:00
Group {
condition: qbs.targetOS.contains("windows") && (qbs.architecture.contains("x86_64") || qbs.architecture.contains("x86"))
name: "pdftops Windows"
prefix: project.sourceDirectory + "/dist/win/"
2023-01-10 09:15:15 +01:00
files: ["pdftops.exe"]
fileTags: ["pdftops_dist_win"]
qbs.install: true
qbs.installDir: buildconfig.installBinaryPath
}
Properties {
condition: qbs.targetOS.contains("macos") && buildconfig.enableMultiBundle
macdeployqt.targetApps: {
var apps = [];
if (pdftops.pdftopsPresent)
apps.push("pdftops");
if (buildconfig.useConanPackages && buildconfig.conanCrashReportingEnabled)
apps.push("crashpad_handler");
return apps;
}
}
Group {
condition: qbs.targetOS.contains("macos") && buildconfig.enableMultiBundle && pdftops.pdftopsPresent
name: "pdftops MacOS"
files: [pdftops.pdftopsPath]
fileTags: ["pdftops.in"]
}
2023-01-10 18:19:11 +01:00
Group {
name: "48x48/apps"
prefix: project.sourceDirectory + "/share/icons/48x48/apps/"
2023-01-10 18:19:11 +01:00
files: "puzzle.png"
fileTags: "freedesktop.48x48AppsIcons"
}
Group {
name: "64x64/apps"
prefix: project.sourceDirectory + "/share/icons/64x64/apps/"
2023-01-10 18:19:11 +01:00
files: "puzzle.png"
fileTags: "freedesktop.64x64AppsIcons"
}
Group {
name: "128x128/apps"
prefix: project.sourceDirectory + "/share/icons/128x128/apps/"
2023-01-10 18:19:11 +01:00
files: "puzzle.png"
fileTags: "freedesktop.128x128AppsIcons"
}
Group {
name: "256x256/apps"
prefix: project.sourceDirectory + "/share/icons/256x256/apps/"
2023-01-10 18:19:11 +01:00
files: "puzzle.png"
fileTags: "freedesktop.256x256AppsIcons"
}
Group {
name: "512x512/apps"
prefix: project.sourceDirectory + "/share/icons/512x512/apps/"
2023-01-10 18:19:11 +01:00
files: "puzzle.png"
fileTags: "freedesktop.512x512AppsIcons"
}
Group {
name: "apps48x48/mimetypes"
prefix: project.sourceDirectory + "/share/icons/48x48/mimetypes/"
2023-01-10 18:19:11 +01:00
files: "application-x-valentina-layout.png"
fileTags: "freedesktop.48x48MimetypesIcons"
}
Group {
name: "apps64x64/mimetypes"
prefix: project.sourceDirectory + "/share/icons/64x64/mimetypes/"
2023-01-10 18:19:11 +01:00
files: "application-x-valentina-layout.png"
fileTags: "freedesktop.64x64MimetypesIcons"
}
Group {
name: "apps128x128/mimetypes"
prefix: project.sourceDirectory + "/share/icons/128x128/mimetypes/"
2023-01-10 18:19:11 +01:00
files: "application-x-valentina-layout.png"
fileTags: "freedesktop.128x128MimetypesIcons"
}
Group {
name: "apps256x256/mimetypes"
prefix: project.sourceDirectory + "/share/icons/256x256/mimetypes/"
2023-01-10 18:19:11 +01:00
files: "application-x-valentina-layout.png"
fileTags: "freedesktop.256x256MimetypesIcons"
}
Group {
name: "apps512x512/mimetypes"
prefix: project.sourceDirectory + "/share/icons/512x512/mimetypes/"
2023-01-10 18:19:11 +01:00
files: "application-x-valentina-layout.png"
fileTags: "freedesktop.512x512MimetypesIcons"
}
2023-01-13 17:47:28 +01:00
Group {
name: "Puzzle RC"
2023-01-21 16:12:53 +01:00
condition: qbs.targetOS.contains("windows")
prefix: product.sourceDirectory + "/share/resources/"
2023-01-13 17:47:28 +01:00
files: "puzzle.rc"
}
2023-01-18 14:04:26 +01:00
Group {
name: "win deploy"
condition: qbs.targetOS.contains("windows")
prefix: project.sourceDirectory + "/dist/win/"
files: [
"layout.ico",
]
qbs.install: true
qbs.installDir: buildconfig.installAppPath
}
2023-01-25 17:09:45 +01:00
Group {
name: "MacOS assets"
2023-01-27 18:07:24 +01:00
condition: qbs.targetOS.contains("macos") && buildconfig.enableMultiBundle
2023-01-25 17:09:45 +01:00
prefix: project.sourceDirectory + "/dist/macx/puzzle/"
files: [
2023-01-25 17:13:07 +01:00
"Info.plist",
"puzzle.xcassets"
2023-01-25 17:09:45 +01:00
]
}
2023-01-25 17:13:07 +01:00
Group {
name: "ICNS"
2023-01-27 18:07:24 +01:00
condition: qbs.targetOS.contains("macos") && buildconfig.enableMultiBundle
2023-01-25 17:13:07 +01:00
prefix: project.sourceDirectory + "/dist/macx/valentina-project.xcassets/"
files: "layout.iconset"
}
2023-06-22 17:30:43 +02:00
Group {
name: "SVG Fonts"
prefix: project.sourceDirectory + "/src/app/share/svgfonts/"
files: [
"**/*.svg"
]
fileTags:["svg_fonts"]
}
2024-02-10 14:53:02 +01:00
Group {
name: "freedesktop"
condition: !buildconfig.enableAppImage && qbs.targetOS.contains("unix") && !qbs.targetOS.contains("macos")
prefix: project.sourceDirectory + "/dist/"
files: [
"ua.com.smart-pattern." + product.targetName + ".desktop"
]
}
freedesktop2.desktopKeys: ({
'Exec': FileInfo.joinPaths(qbs.installPrefix,
product.installDir,
product.targetName) + ' %F',
'X-Application-Version': product.version,
})
2023-06-22 17:30:43 +02:00
Rule {
condition: product.qbs.targetOS.contains("macos") && product.buildconfig.enableMultiBundle
inputs: ["svg_fonts"]
Artifact {
filePath: {
var dstDir = product.qbs.installRoot + product.qbs.installPrefix + "/" +
product.buildconfig.installDataPath + "/svgfonts";
return dstDir + "/" + input.filePath.split("src/app/share/svgfonts/")[1];
}
fileTags: ["install_root_svg_fonts"]
}
prepare: {
console.info(output.filePath)
var cmd = new JavaScriptCommand();
cmd.description = "Installing " + input.fileName;
cmd.highlight = "codegen";
cmd.sourceCode = function() {
File.copy(input.filePath, output.filePath);
}
return [cmd];
}
}
2023-01-04 17:31:50 +01:00
}