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; |