import qbs.base 1.0 import qbs.fileinfo as FileInfo import "qbs/defaults.js" as Defaults Project { property string ide_version_major: '2' property string ide_version_minor: '7' property string ide_version_release: '83' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release property string ide_app_path: qbs.targetOS == "mac" ? "" : "bin" property string ide_app_target: qbs.targetOS == "mac" ? "Qt Creator" : "qtcreator" property string ide_library_path: { if (qbs.targetOS == "mac") return ide_app_target + ".app/Contents/PlugIns" else if (qbs.targetOS == "windows") return ide_app_path else return "lib/qtcreator" } property string ide_plugin_path: { if (qbs.targetOS == "mac") return ide_library_path else if (qbs.targetOS == "windows") return "lib/qtcreator/plugins" else return ide_library_path + "/plugins" } property string ide_data_path: qbs.targetOS == "mac" ? ide_app_target + ".app/Contents/Resources" : "share/qtcreator" property string ide_libexec_path: qbs.targetOS == "mac" ? ide_data_path : ide_app_path property string ide_doc_path: qbs.targetOS == "mac" ? ide_data_path + "/doc" : "share/doc/qtcreator" property string ide_bin_path: qbs.targetOS == "mac" ? ide_app_target + ".app/Contents/MacOS" : ide_app_path moduleSearchPaths: "qbs" references: [ "lib/qtcreator/qtcomponents/qtcomponents.qbs", "share/share.qbs", "share/qtcreator/translations/translations.qbs", "src/libs/aggregation/aggregation.qbs", "src/libs/cplusplus/cplusplus.qbs", "src/libs/extensionsystem/extensionsystem.qbs", "src/libs/glsl/glsl.qbs", "src/libs/languageutils/languageutils.qbs", "src/libs/qmleditorwidgets/qmleditorwidgets.qbs", "src/libs/qmljs/qmljs.qbs", "src/libs/qmldebug/qmldebug.qbs", "src/libs/qtcomponents/styleitem/styleitem.qbs", "src/libs/ssh/ssh.qbs", "src/libs/utils/process_stub.qbs", "src/libs/utils/process_ctrlc_stub.qbs", "src/libs/utils/utils.qbs", "src/libs/zeroconf/zeroconf.qbs", "src/plugins/analyzerbase/analyzerbase.qbs", "src/plugins/android/android.qbs", "src/plugins/autotoolsprojectmanager/autotoolsprojectmanager.qbs", "src/plugins/bazaar/bazaar.qbs", "src/plugins/bineditor/bineditor.qbs", "src/plugins/bookmarks/bookmarks.qbs", "src/plugins/classview/classview.qbs", "src/plugins/clearcase/clearcase.qbs", "src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs", "src/plugins/coreplugin/coreplugin.qbs", "src/plugins/coreplugin/images/logo/logo.qbs", "src/plugins/cpaster/cpaster.qbs", "src/plugins/cppeditor/cppeditor.qbs", "src/plugins/cpptools/cpptools.qbs", "src/plugins/cvs/cvs.qbs", "src/plugins/debugger/debugger.qbs", "src/plugins/debugger/ptracepreload.qbs", "src/plugins/designer/designer.qbs", "src/plugins/diffeditor/diffeditor.qbs", "src/plugins/fakevim/fakevim.qbs", "src/plugins/find/find.qbs", "src/plugins/genericprojectmanager/genericprojectmanager.qbs", "src/plugins/git/git.qbs", "src/plugins/glsleditor/glsleditor.qbs", "src/plugins/helloworld/helloworld.qbs", "src/plugins/help/help.qbs", "src/plugins/imageviewer/imageviewer.qbs", "src/plugins/locator/locator.qbs", "src/plugins/macros/macros.qbs", "src/plugins/madde/madde.qbs", "src/plugins/mercurial/mercurial.qbs", "src/plugins/perforce/perforce.qbs", "src/plugins/projectexplorer/projectexplorer.qbs", "src/plugins/qbsprojectmanager/qbsprojectmanager.qbs", "src/plugins/pythoneditor/pythoneditor.qbs", // "src/plugins/qmldesigner/qmldesigner.qbs", "src/plugins/qmljseditor/qmljseditor.qbs", "src/plugins/qmljstools/qmljstools.qbs", "src/plugins/qmlprofiler/qmlprofiler.qbs", "src/plugins/qmlprojectmanager/qmlprojectmanager.qbs", "src/plugins/qnx/qnx.qbs", "src/plugins/qt4projectmanager/qt4projectmanager.qbs", "src/plugins/qtsupport/qtsupport.qbs", "src/plugins/remotelinux/remotelinux.qbs", "src/plugins/resourceeditor/resourceeditor.qbs", "src/plugins/subversion/subversion.qbs", "src/plugins/tasklist/tasklist.qbs", "src/plugins/texteditor/texteditor.qbs", "src/plugins/todo/todo.qbs", "src/plugins/updateinfo/updateinfo.qbs", "src/plugins/valgrind/valgrind.qbs", "src/plugins/vcsbase/vcsbase.qbs", "src/plugins/welcome/welcome.qbs", "src/tools/qtcdebugger/qtcdebugger.qbs", "src/tools/qtcreatorcrashhandler/qtcreatorcrashhandler.qbs", "src/tools/qtpromaker/qtpromaker.qbs", "src/plugins/cpaster/frontend/frontend.qbs", "src/tools/sdktool/sdktool.qbs" ] Product { name: "app_version_header" type: "hpp" files: "src/app/app_version.h.in" property string ide_version_major: project.ide_version_major property string ide_version_minor: project.ide_version_minor property string ide_version_release: project.ide_version_release property string qtcreator_version: project.qtcreator_version Transformer { inputs: ["src/app/app_version.h.in"] Artifact { fileName: "app/app_version.h" fileTags: "hpp" } prepare: { var cmd = new JavaScriptCommand(); cmd.description = "generating app_version.h"; cmd.highlight = "codegen"; cmd.qtcreator_version = product.qtcreator_version; cmd.ide_version_major = product.ide_version_major; cmd.ide_version_minor = product.ide_version_minor; cmd.ide_version_release = product.ide_version_release; cmd.onWindows = (product.moduleProperty("qbs", "targetOS") === "windows"); cmd.sourceCode = function() { var file = new TextFile(input.fileName); var content = file.readAll(); // replace quoted quotes content = content.replace(/\\\"/g, '"'); // replace Windows line endings if (onWindows) content = content.replace(/\r\n/g, "\n"); // replace the magic qmake incantations content = content.replace(/(\n#define IDE_VERSION) .+\n/, "$1 " + qtcreator_version + "\n"); content = content.replace(/(\n#define IDE_VERSION_MAJOR) .+\n/, "$1 " + ide_version_major + "\n") content = content.replace(/(\n#define IDE_VERSION_MINOR) .+\n/, "$1 " + ide_version_minor + "\n") content = content.replace(/(\n#define IDE_VERSION_RELEASE) .+\n/, "$1 " + ide_version_release + "\n") file = new TextFile(output.fileName, TextFile.WriteOnly); file.truncate(); file.write(content); file.close(); } return cmd; } } Export { Depends { name: "cpp" } cpp.includePaths: product.buildDirectory } } Application { name: project.ide_app_target consoleApplication: qbs.debugInformation cpp.rpaths: qbs.targetOS == "mac" ? ["@executable_path/.."] : ["$ORIGIN/../lib/qtcreator"] cpp.defines: Defaults.defines(qbs) cpp.linkerFlags: { if (qbs.buildVariant == "release" && (qbs.toolchain == "gcc" || qbs.toolchain == "mingw")) return ["-Wl,-s"] } cpp.includePaths: [ "src", "src/libs", "src/shared/qtsingleapplication", "src/shared/qtlockedfile", buildDirectory ] Depends { name: "app_version_header" } Depends { name: "cpp" } Depends { name: "Qt"; submodules: ["widgets", "network"] } Depends { name: "Utils" } Depends { name: "ExtensionSystem" } files: [ "src/app/main.cpp", "src/app/qtcreator.rc", "src/shared/qtsingleapplication/qtsingleapplication.h", "src/shared/qtsingleapplication/qtsingleapplication.cpp", "src/shared/qtsingleapplication/qtlocalpeer.h", "src/shared/qtsingleapplication/qtlocalpeer.cpp", "src/shared/qtlockedfile/qtlockedfile.cpp", "src/tools/qtcreatorcrashhandler/crashhandlersetup.cpp", "src/tools/qtcreatorcrashhandler/crashhandlersetup.h" ] Group { name: "qtcreator.sh" condition: qbs.targetPlatform.indexOf("unix") != -1 && qbs.targetOS != "mac" files: "bin/qtcreator.sh" qbs.install: true qbs.installDir: "bin" } Group { name: "QtLockedFile_unix" condition: qbs.targetPlatform.indexOf("unix") != -1 files: [ "src/shared/qtlockedfile/qtlockedfile_unix.cpp" ] } Group { name: "QtLockedFile_win" condition: qbs.targetOS == "windows" files: [ "src/shared/qtlockedfile/qtlockedfile_win.cpp" ] } Group { fileTagsFilter: product.type qbs.install: true qbs.installDir: project.ide_app_path } } }