Skip to content
Snippets Groups Projects
qtcreator.qbp 6.85 KiB
Newer Older
Joerg Bornemann's avatar
Joerg Bornemann committed
import qbs.base 1.0
import qbs.fileinfo 1.0 as FileInfo

Project {
    property string ide_version_major: '2'
    property string ide_version_minor: '4'
    property string ide_version_release: '82'
Joerg Bornemann's avatar
Joerg Bornemann committed
    property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release
    property var additionalCppDefines: [ 'IDE_LIBRARY_BASENAME="lib"' ]
    moduleSearchPaths: "qbs"

    references: [
        "lib/qtcreator/qtcomponents/qtcomponents.qbs",
        "share/share.qbs",
        "src/libs/3rdparty/botan/botan.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/qmljsdebugclient/qmljsdebugclient.qbs",
        "src/libs/qtcomponents/styleitem/styleitem.qbs",
        "src/libs/symbianutils/symbianutils.qbs",
        "src/libs/utils/utils.qbs",
        "src/libs/zeroconf/zeroconf.qbs",
Joerg Bornemann's avatar
Joerg Bornemann committed
        "src/plugins/analyzerbase/analyzerbase.qbs",
        "src/plugins/bazaar/bazaar.qbs",
        "src/plugins/bineditor/bineditor.qbs",
        "src/plugins/bookmarks/bookmarks.qbs",
        "src/plugins/classview/classview.qbs",
        "src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs",
        "src/plugins/coreplugin/coreplugin.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/designer/designer.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/qmljseditor/qmljseditor.qbs",
        "src/plugins/qmljsinspector/qmljsinspector.qbs",
        "src/plugins/qmljstools/qmljstools.qbs",
        "src/plugins/qmlprofiler/qmlprofiler.qbs",
        "src/plugins/qmlprojectmanager/qmlprojectmanager.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",
Orgad Shaneh's avatar
Orgad Shaneh committed
        "src/plugins/todo/todo.qbs",
Joerg Bornemann's avatar
Joerg Bornemann committed
        "src/plugins/valgrind/valgrind.qbs",
        "src/plugins/vcsbase/vcsbase.qbs",
        "src/plugins/welcome/welcome.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.modules.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;
            }
        }
    }

    Product {
        name: "qtcreator"
        type: ["application", "installed_content"]
        destination: "bin"

        cpp.rpaths: ["$ORIGIN/../lib"]
        cpp.defines: project.additionalCppDefines
        cpp.includePaths: [
            "src",
            "src/libs",
            "src/shared/qtsingleapplication",
            "src/shared/qtlockedfile",
            buildDirectory
        ]

        Depends { name: "app_version_header" }
        Depends { name: "cpp" }
        Depends { name: "Qt"; submodules: ["gui", "network"] }
        Depends { name: "utils" }
        Depends { name: "extensionsystem" }

        files: [
            "src/app/main.cpp",
            "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"
        ]

        Group {
            qbs.installDir: 'bin'
Joerg Bornemann's avatar
Joerg Bornemann committed
            files: "bin/qtcreator.sh"
            fileTags: "install"
        }

        Group {
           condition: qbs.targetOS == "linux" || qbs.targetOS == "macx"
           files: [
               "src/shared/qtlockedfile/qtlockedfile_unix.cpp"
           ]
        }

        Group {
           condition: qbs.targetOS == "windows"
           files: [
               "src/shared/qtlockedfile/qtlockedfile_win.cpp"
           ]
        }
    }
}