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