qmake/generators/symbian/symmake_abld.cpp
branchRCL_3
changeset 7 3f74d0d4af4c
parent 5 d3bac044e0f0
equal deleted inserted replaced
6:dee5afe5301f 7:3f74d0d4af4c
    45 #include <qstring.h>
    45 #include <qstring.h>
    46 #include <qstringlist.h>
    46 #include <qstringlist.h>
    47 #include <qdir.h>
    47 #include <qdir.h>
    48 #include <qdatetime.h>
    48 #include <qdatetime.h>
    49 #include <qdebug.h>
    49 #include <qdebug.h>
       
    50 
       
    51 // Included from tools/shared
       
    52 #include <symbian/epocroot.h>
    50 
    53 
    51 #define DO_NOTHING_TARGET "do_nothing"
    54 #define DO_NOTHING_TARGET "do_nothing"
    52 #define CREATE_TEMPS_TARGET "create_temps"
    55 #define CREATE_TEMPS_TARGET "create_temps"
    53 #define EXTENSION_CLEAN "extension_clean"
    56 #define EXTENSION_CLEAN "extension_clean"
    54 #define PRE_TARGETDEPS_TARGET "pre_targetdeps"
    57 #define PRE_TARGETDEPS_TARGET "pre_targetdeps"
    55 #define COMPILER_CLEAN_TARGET "compiler_clean"
    58 #define COMPILER_CLEAN_TARGET "compiler_clean"
    56 #define FINALIZE_TARGET "finalize"
    59 #define FINALIZE_TARGET "finalize"
    57 #define GENERATED_SOURCES_TARGET "generated_sources"
    60 #define GENERATED_SOURCES_TARGET "generated_sources"
    58 #define ALL_SOURCE_DEPS_TARGET "all_source_deps"
    61 #define ALL_SOURCE_DEPS_TARGET "all_source_deps"
    59 //:QTP:QTPROD-92 Deployment of plugins requires WINSCW build before ARM build
       
    60 #define DEPLOYMENT_TARGET "deployment"
    62 #define DEPLOYMENT_TARGET "deployment"
    61 #define DEPLOYMENT_CLEAN_TARGET "deployment_clean"
    63 #define DEPLOYMENT_CLEAN_TARGET "deployment_clean"
    62 #define WINSCW_DEPLOYMENT_TARGET "winscw_deployment"
    64 #define WINSCW_DEPLOYMENT_TARGET "winscw_deployment"
    63 #define WINSCW_DEPLOYMENT_CLEAN_TARGET "winscw_deployment_clean"
    65 #define WINSCW_DEPLOYMENT_CLEAN_TARGET "winscw_deployment_clean"
    64 /* :QTP:QTPROD-155: Don't write .make.cache during the compilation, it causes dependency problems in
    66 #define STORE_BUILD_TARGET "store_build"
    65  * the parallel build clusters
       
    66  */
       
    67 #define STORE_BUILD_TARGET ""
       
    68 
    67 
    69 SymbianAbldMakefileGenerator::SymbianAbldMakefileGenerator() : SymbianMakefileGenerator() { }
    68 SymbianAbldMakefileGenerator::SymbianAbldMakefileGenerator() : SymbianMakefileGenerator() { }
    70 SymbianAbldMakefileGenerator::~SymbianAbldMakefileGenerator() { }
    69 SymbianAbldMakefileGenerator::~SymbianAbldMakefileGenerator() { }
    71 
    70 
    72 void SymbianAbldMakefileGenerator::writeMkFile(const QString& wrapperFileName, bool deploymentOnly)
    71 void SymbianAbldMakefileGenerator::writeMkFile(const QString& wrapperFileName, bool deploymentOnly)
   114         QString cleanDeps;
   113         QString cleanDeps;
   115         QString finalDeps;
   114         QString finalDeps;
   116         QString cleanDepsWinscw;
   115         QString cleanDepsWinscw;
   117         QString finalDepsWinscw;
   116         QString finalDepsWinscw;
   118         QStringList wrapperTargets;
   117         QStringList wrapperTargets;
   119         //:QTP:QTPROD-92 Deployment of plugins requires WINSCW build before ARM build
       
   120         if (deploymentOnly) {
   118         if (deploymentOnly) {
   121             buildDeps.append(STORE_BUILD_TARGET);
   119             buildDeps.append(STORE_BUILD_TARGET);
   122             cleanDeps.append(DEPLOYMENT_CLEAN_TARGET);
   120             cleanDeps.append(DEPLOYMENT_CLEAN_TARGET);
   123             cleanDepsWinscw.append(WINSCW_DEPLOYMENT_CLEAN_TARGET);
   121             cleanDepsWinscw.append(WINSCW_DEPLOYMENT_CLEAN_TARGET " " DEPLOYMENT_CLEAN_TARGET);
   124             finalDeps.append(DEPLOYMENT_TARGET);
   122             finalDeps.append(DEPLOYMENT_TARGET);
   125             finalDepsWinscw.append(WINSCW_DEPLOYMENT_TARGET);
   123             finalDepsWinscw.append(WINSCW_DEPLOYMENT_TARGET " " DEPLOYMENT_TARGET);
   126             wrapperTargets << WINSCW_DEPLOYMENT_TARGET
   124             wrapperTargets << WINSCW_DEPLOYMENT_TARGET
   127 				<< WINSCW_DEPLOYMENT_CLEAN_TARGET
   125                 << WINSCW_DEPLOYMENT_CLEAN_TARGET
   128 				<< DEPLOYMENT_TARGET 
   126                 << DEPLOYMENT_TARGET
   129                 << DEPLOYMENT_CLEAN_TARGET 
   127                 << DEPLOYMENT_CLEAN_TARGET
   130                 << STORE_BUILD_TARGET;
   128                 << STORE_BUILD_TARGET;
   131         } else {
   129         } else {
   132             buildDeps.append(CREATE_TEMPS_TARGET " " PRE_TARGETDEPS_TARGET " " STORE_BUILD_TARGET);
   130             buildDeps.append(CREATE_TEMPS_TARGET " " PRE_TARGETDEPS_TARGET " " STORE_BUILD_TARGET);
   133             cleanDeps.append(EXTENSION_CLEAN " " DEPLOYMENT_CLEAN_TARGET);
   131             cleanDeps.append(EXTENSION_CLEAN " " DEPLOYMENT_CLEAN_TARGET);
   134             cleanDepsWinscw.append(EXTENSION_CLEAN " " WINSCW_DEPLOYMENT_CLEAN_TARGET);
   132             cleanDepsWinscw.append(EXTENSION_CLEAN " " WINSCW_DEPLOYMENT_CLEAN_TARGET " " DEPLOYMENT_CLEAN_TARGET);
   135             finalDeps.append(FINALIZE_TARGET " " DEPLOYMENT_TARGET);
   133             finalDeps.append(FINALIZE_TARGET " " DEPLOYMENT_TARGET);
   136             finalDepsWinscw.append(FINALIZE_TARGET " " WINSCW_DEPLOYMENT_TARGET);
   134             finalDepsWinscw.append(FINALIZE_TARGET " " WINSCW_DEPLOYMENT_TARGET " " DEPLOYMENT_TARGET);
   137             wrapperTargets << PRE_TARGETDEPS_TARGET
   135             wrapperTargets << PRE_TARGETDEPS_TARGET
   138                 << CREATE_TEMPS_TARGET
   136                 << CREATE_TEMPS_TARGET
   139                 << EXTENSION_CLEAN
   137                 << EXTENSION_CLEAN
   140                 << FINALIZE_TARGET
   138                 << FINALIZE_TARGET
   141                 << WINSCW_DEPLOYMENT_CLEAN_TARGET
   139                 << WINSCW_DEPLOYMENT_CLEAN_TARGET
   258     QStringList debugPlatforms = allPlatforms;
   256     QStringList debugPlatforms = allPlatforms;
   259     QStringList releasePlatforms = allPlatforms;
   257     QStringList releasePlatforms = allPlatforms;
   260     releasePlatforms.removeAll("winscw"); // No release for emulator
   258     releasePlatforms.removeAll("winscw"); // No release for emulator
   261 
   259 
   262     QString testClause;
   260     QString testClause;
   263     if (project->isActiveConfig("symbian_test"))
   261     if (project->isActiveConfig(SYMBIAN_TEST_CONFIG))
   264         testClause = QLatin1String(" test");
   262         testClause = QLatin1String(" test");
   265     else
   263     else
   266         testClause = QLatin1String("");
   264         testClause = QLatin1String("");
   267 
   265 
   268     QTextStream t(&wrapperFile);
   266     QTextStream t(&wrapperFile);
   281     t << "MAKEFILE          = " << wrapperFile.fileName() << endl;
   279     t << "MAKEFILE          = " << wrapperFile.fileName() << endl;
   282     t << "QMAKE             = " << Option::fixPathToTargetOS(var("QMAKE_QMAKE")) << endl;
   280     t << "QMAKE             = " << Option::fixPathToTargetOS(var("QMAKE_QMAKE")) << endl;
   283     t << "DEL_FILE          = " << var("QMAKE_DEL_FILE") << endl;
   281     t << "DEL_FILE          = " << var("QMAKE_DEL_FILE") << endl;
   284     t << "DEL_DIR           = " << var("QMAKE_DEL_DIR") << endl;
   282     t << "DEL_DIR           = " << var("QMAKE_DEL_DIR") << endl;
   285     t << "MOVE              = " << var("QMAKE_MOVE") << endl;
   283     t << "MOVE              = " << var("QMAKE_MOVE") << endl;
       
   284     t << "CHK_DIR_EXISTS    = " << var("QMAKE_CHK_DIR_EXISTS") << endl;
       
   285     t << "MKDIR             = " << var("QMAKE_MKDIR") << endl;
   286     t << "XCOPY             = xcopy /d /f /h /r /y /i" << endl;
   286     t << "XCOPY             = xcopy /d /f /h /r /y /i" << endl;
   287     t << "ABLD              = ABLD.BAT" << endl;
   287     t << "ABLD              = ABLD.BAT" << endl;
   288     t << "DEBUG_PLATFORMS   = " << debugPlatforms.join(" ") << endl;
   288     t << "DEBUG_PLATFORMS   = " << debugPlatforms.join(" ") << endl;
   289     t << "RELEASE_PLATFORMS = " << releasePlatforms.join(" ") << endl;
   289     t << "RELEASE_PLATFORMS = " << releasePlatforms.join(" ") << endl;
   290     t << "MAKE              = make" << endl;
   290     t << "MAKE              = make" << endl;
   445         QList<MakefileGenerator::SubTarget*> subtargets = findSubDirsSubTargets();
   445         QList<MakefileGenerator::SubTarget*> subtargets = findSubDirsSubTargets();
   446         writeSubTargets(t, subtargets, SubTargetSkipDefaultVariables | SubTargetSkipDefaultTargets);
   446         writeSubTargets(t, subtargets, SubTargetSkipDefaultVariables | SubTargetSkipDefaultTargets);
   447         qDeleteAll(subtargets);
   447         qDeleteAll(subtargets);
   448     }
   448     }
   449 
   449 
   450     writeDeploymentTargets(t);
   450     // Deploymend targets for both emulator and rom deployment
   451     //:QTP:QTPROD-92 Deployment of plugins requires WINSCW build before ARM build
   451     writeDeploymentTargets(t, false);
   452 	writeDeploymentTargets(t, true);
   452     writeDeploymentTargets(t, true);
   453 
   453 
   454     writeSisTargets(t);
   454     writeSisTargets(t);
   455 
   455 
   456     /* :QTP:QTPROD-155: Don't write .make.cache during the compilation, it causes dependency problems in
       
   457      * the parallel build clusters
       
   458     writeStoreBuildTarget(t);
   456     writeStoreBuildTarget(t);
   459     */
       
   460 
   457 
   461     generateDistcleanTargets(t);
   458     generateDistcleanTargets(t);
   462 
   459 
   463     t << "clean: $(ABLD)" << endl;
   460     t << "clean: $(ABLD)" << endl;
   464     t << "\t-$(ABLD)" << testClause << " reallyclean" << endl;
   461     t << "\t-$(ABLD)" << testClause << " reallyclean" << endl;
   495     // We don't use extensions for anything in abld
   492     // We don't use extensions for anything in abld
   496     Q_UNUSED(t);
   493     Q_UNUSED(t);
   497     Q_UNUSED(iconTargetFile);
   494     Q_UNUSED(iconTargetFile);
   498 }
   495 }
   499 
   496 
   500 //:QTP:QTPROD-92 Deployment of plugins requires WINSCW build before ARM build
   497 bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool isRom)
   501 bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool isRelease /*= false*/)
   498 {
   502 {
   499     if (isRom)
   503     if (isRelease)
       
   504         t << DEPLOYMENT_TARGET ":" << endl;
   500         t << DEPLOYMENT_TARGET ":" << endl;
   505     else
   501     else
   506         t << WINSCW_DEPLOYMENT_TARGET ":" << endl;
   502         t << WINSCW_DEPLOYMENT_TARGET ":" << endl;
   507 
   503 
   508     QString remoteTestPath = epocRoot() + QLatin1String( isRelease?"epoc32\\data\\z\\private\\":"epoc32\\winscw\\c\\private\\") 
   504     QString remoteTestPath = epocRoot()
   509         + privateDirUid;   // default 4 OpenC; 4 all Symbian too
   505         + QLatin1String(isRom ? "epoc32\\data\\z\\private\\" : "epoc32\\winscw\\c\\private\\")
       
   506         + privateDirUid;
   510     DeploymentList depList;
   507     DeploymentList depList;
   511 
   508 
   512     initProjectDeploySymbian(project, depList, remoteTestPath, false, QLatin1String(isRelease?"armv5":"winscw"), QLatin1String(isRelease?"urel":"udeb"), 
   509     initProjectDeploySymbian(project, depList, remoteTestPath, false,
   513         generatedDirs, generatedFiles);
   510         QLatin1String(isRom ? ROM_DEPLOYMENT_PLATFORM : EMULATOR_DEPLOYMENT_PLATFORM),
       
   511         QString(), generatedDirs, generatedFiles);
   514 
   512 
   515     if (depList.size())
   513     if (depList.size())
   516         t << "\t-echo Deploying changed files..." << endl;
   514         t << "\t-echo Deploying changed files..." << endl;
       
   515 
   517     for (int i = 0; i < depList.size(); ++i) {
   516     for (int i = 0; i < depList.size(); ++i) {
   518         // Xcopy prompts for selecting file or directory if target doesn't exist,
   517         // Xcopy prompts for selecting file or directory if target doesn't exist,
   519         // and doesn't provide switch to force file selection. It does provide dir forcing, though,
   518         // and doesn't provide switch to force file selection. It does provide dir forcing, though,
   520         // so strip the last part of the destination.
   519         // so strip the last part of the destination.
   521         t << "\t-$(XCOPY) \"" << depList.at(i).from << "\" \"" << depList.at(i).to.left(depList.at(i).to.lastIndexOf("\\") + 1) << "\"" << endl;
   520         t << "\t-$(XCOPY) \"" << depList.at(i).from << "\" \""
   522     }
   521           << depList.at(i).to.left(depList.at(i).to.lastIndexOf("\\") + 1) << "\"" << endl;
   523 
   522     }
   524     t << endl;
   523 
   525 
   524     t << endl;
   526     if (isRelease)
   525 
       
   526     if (isRom)
   527         t << DEPLOYMENT_CLEAN_TARGET ":" << endl;
   527         t << DEPLOYMENT_CLEAN_TARGET ":" << endl;
   528     else
   528     else
   529         t << WINSCW_DEPLOYMENT_CLEAN_TARGET ":" << endl;
   529         t << WINSCW_DEPLOYMENT_CLEAN_TARGET ":" << endl;
   530 
   530 
   531     QStringList cleanList;
   531     QStringList cleanList;