summaryrefslogtreecommitdiffstats
path: root/qmake/generators/makefile.cpp
Commit message (Collapse)AuthorAgeFilesLines
* inline MakefileGenerator::processPrlVariable()Oswald Buddenhagen2012-07-311-18/+6
| | | | | | | | the visitor-pattern like approach is not needed any more Change-Id: I990db681cbeee91d89ecba97745a8104595247e7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* make the windows prl processing more like the unix variantOswald Buddenhagen2012-07-311-5/+1
| | | | | | | | it's more elegant, and more similar code is better. Change-Id: I2b8b036cb70a932fd171e23cf7d3389188401924 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* stub out MakefileGenerator::processPrlFiles()Oswald Buddenhagen2012-07-311-19/+1
| | | | | | | | | | the unix and windows variants don't rely on it. not making it purely virtual only because the project generator inherits MakefileGenerator as well but does not need an implementation. Change-Id: I80099b3f5d07cd037b408cf1099c58ff3a2904cd Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* dispose of MSVCPROJ_LIBSOswald Buddenhagen2012-07-241-8/+2
| | | | | | | | | | | | | | | this way QMAKE_LIBS{,_PRIVATE} can be treated the same as in all other generators, which allows us to: - make the windows generators' findLibraries() be more like the unix version - dispose of QMAKE_INTERNAL_PRL_LIBS handling while reading prl files (because the output always goes to QMAKE_LIBS) - as a side effect, QMAKE_LIBS_PRIVATE are not subjected to prl file resolution any more, which is again consistent with unix - the correctness of that needs to be assessed separately. Change-Id: Ie9bc04d117eff6a7cde846677f98acf3c64aa6ee Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* automatically fix separators in QMAKE_{DIST,}CLEANOswald Buddenhagen2012-07-161-2/+11
| | | | | | | it's a tad insane to expect the user to do that Change-Id: I75c68f2a28656c9ba2e3fabcc79718b899b29ce7 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Uppercase the CONFIG for verbatim mode.Stephen Kelly2012-07-041-1/+1
| | | | | Change-Id: Iec883e0218af80fc329d866affb2b95db72c54d3 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* qmake: improve the .pc files generatorKonstantin Ritt2012-07-031-3/+1
| | | | | | | | Don't hardcode the "qt_config" EXTRA variable and use QMAKE_PKGCONFIG_VARIABLES instead. This allows qmake create the .pc files that are unrelated to Qt. Change-Id: Ic72005e8819a15f6c50f3aaf79424a247fba20af Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* const correctness for variables()Oswald Buddenhagen2012-06-271-1/+1
| | | | | Change-Id: Id11453ccbae3ffa32580badadada945d342d727a Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* don't overuse variables()Oswald Buddenhagen2012-06-271-10/+10
| | | | | Change-Id: Ib2da88e5e29c0bfecc39a9c06e82a34a4bd0b1e6 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* const correctness for values() callsOswald Buddenhagen2012-06-271-43/+43
| | | | | Change-Id: I1476ae8d3fb7364686398c5650729dee94a8e933 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* fix specdir()Oswald Buddenhagen2012-06-271-2/+1
| | | | | | | | get the actual spec path directly from the project - the specs in Option are not necessarily resolved. Change-Id: Ia2bf2199c5269aa5b5a9d4c38de36171f25d448b Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* revamp handling of qmake target modeOswald Buddenhagen2012-06-271-1/+7
| | | | | | | | | | | the project evaluator becomes oblivious of the target mode. the mode is set up in spec_post.prf according to the spec. $$QMAKE_TARGET contains the feature suffixes to search, and is also contained in $$CONFIG. the target_mode variable itself becomes private to the Makefile class. Change-Id: I3c06d9dab536b753343cec6c5c491d3203e50bd8 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* repurpose -unix/-macx/-win32 optionsOswald Buddenhagen2012-06-271-8/+0
| | | | | | | | | | they have been deprecated long enough, so we can mess with them now. don't make them set the target mode any more; the makespec can do that autoritatively. instead, they can be used to override the host mode for debugging purposes. Change-Id: Ife5fdcf4f1b6b926901a80896ac92b7d821278d1 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* clean up specdir()Oswald Buddenhagen2012-06-261-7/+4
| | | | | | | | | the only callers which used non-default arguments are gone now, so remove the arguments entirely. this also enables us to re-enable result caching. Change-Id: I62f76e17e531a4eeafddb9b29716ca0a0eb3dbea Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* fix -spec/-xspec argument re-assemblyOswald Buddenhagen2012-06-261-2/+9
| | | | | | | | | | the specs in Option are now only fixifiable absolute paths if an actual path was passed on the command line - otherwise these are just names, and we should pass them on verbatim. Change-Id: I5b3535dadf2d6b2b3116331e6636f6e363a5361f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* revamp automatic makefile generation for sub-projectsOswald Buddenhagen2012-06-191-32/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of making the "real" targets depend on the makefiles, add conditional makefile generation to the targets themselves. this causes makefile generation to follow the recursion order determined by the project, which is important when dealing with prl and module pri files. a side effect of this is that qmake and make calls are interleaved now, which is entirely different from a 'qmake -r' run. on the downside, calling make with multiple targets which operate on the same subprojects without prior makefile generation will make a mess, as the qmake calls will be racing. this should be no problem, as qmake does not generate recursive targets where this would be useful - at least by default. it is not sufficient to just order the creation of the makefiles non-recursively (e.g., by using gnu-specific order-only-prerequisites), as an interrupted and subsequently resumed build would happily skip the nested makefiles. workable alternative approaches would be walking the entire tree in a pre-pass to ensure makefile presence (which is incredibly slow) or creating additional stamp files only after recursing and having the makefiles depend on them (which is ugly). Task-number: QTBUG-23376 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Change-Id: I88d3e7610215677d362026de316513d3bea04b06
* introduce $$QMAKE_CHK_EXISTS_GLUEOswald Buddenhagen2012-06-191-6/+4
| | | | | | | instead of hard-coding platform differences, use a variable. Change-Id: I20e98811ad5f07429148c6f88aedbabc3ba58fff Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* normalize $$QMAKE_QMAKEOswald Buddenhagen2012-06-191-2/+2
| | | | | | | | | everything in the projects should be normalized. only the makefile generators need to adjust it to the native form. Change-Id: I06a4e997f32134d13949ec4a9dd1b44367aab7cb Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* fix in-/out-dir mixupOswald Buddenhagen2012-06-191-4/+4
| | | | | | | | | no point in entering the outdir and leaving the indir. this doesn't really matter except for the obsolete borland generator, but whatever. Change-Id: Ieb4e4c549ebd65f99e4d00819c52822968b060a4 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* remove unnecessary conditionalOswald Buddenhagen2012-06-191-6/+2
| | | | | | | the code above already deals with the differences Change-Id: Ifb799e46f5187e7bd3d0f0169e868ad267bcfe23 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* remove duplicate assignments of MKDIR & CHK_DIR_EXISTSOswald Buddenhagen2012-06-191-2/+0
| | | | | Change-Id: I314659a1ba25227380176dc65a9c81e3c6df28c1 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* unobfuscate makefiles re $(CHK_DIR_EXISTS)Oswald Buddenhagen2012-06-191-1/+4
| | | | | | | | no need to define an obscure variable for it. just inline it. the assignments are left in for compatibility with hand-written commands. Change-Id: I9bc3914e2c4116f3b8fe00a421ca0f036bb7e214 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* make 'qmake_all' targets respect .depends and CONFIG+=orderedOswald Buddenhagen2012-06-191-0/+7
| | | | | | Change-Id: I010a9886ee0d40e4319cb6bd873b038336a42111 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* make 'qmake_all' target of SUBDIRS projects properly recursiveOswald Buddenhagen2012-06-191-6/+20
| | | | | | | | | so far it would rebuild the makefiles one level down only, which is somewhat arbitrary and not really helpful. Change-Id: I5fe01f379ecc4b210610a674d7df7dfc18131eef Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* make 'qmake' target of SUBDIRS projects non-recursiveOswald Buddenhagen2012-06-191-5/+1
| | | | | | | | | that's consistent with other projects. 'qmake_all' can be used for recursion. Change-Id: Ie6d620f7a3e0e28d3f2f82f01ca94c2f46137c68 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* don't use $(MAKEFILE) to refer to SUBDIRS' makefilesOswald Buddenhagen2012-06-191-1/+1
| | | | | | | | $(MAKEFILE) is our own file, and using it would wreak havoc if it was named anything but Makefile. Change-Id: I51cae2014a85399b409f18788f864ff2a82e493e Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* look for .qmake.conf filesOswald Buddenhagen2012-06-191-2/+6
| | | | | | | | | this is the source dir equivalent of .qmake.cache and can be checked into the repository. it can be used to make project-wide settings, or just to signal the presence of an mkspecs/ directory. Change-Id: I5f1cebad2aa2a89e78089341b2051613b6b7a613 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* find .qmake.cache for subprojects independentlyOswald Buddenhagen2012-06-191-3/+3
| | | | | | | | | | this allows the creation of aggregator projects, like, say, qt5. this is not expected to have a negative impact, as no project could reasonably expect a nested .qmake.cache to *not* take effect - in fact, if the project was processed stand-alone, it would already use it. Change-Id: I33f2935d309baba7e95465f2fefb8231c4f03eda Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* remove some symbian cruftOswald Buddenhagen2012-06-191-11/+0
| | | | | | | | - Option::mmp_ext - references to dead QMAKE_INTERNAL_ET_PARSED_* variables Change-Id: I863605b23798cbca3f6c8ab5a154fd432f1f4dcc Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* introduce /get property variantsOswald Buddenhagen2012-06-191-1/+1
| | | | | | | | | | | | | | | properties are now split into a write location $$[FOO] and a read location $$[FOO/get]. the write locations are hard-coded and configurable via qt.conf/Paths as before, while the read locations are configured via qt.conf/EffectivePaths. this finally provides a clean solution to the problem that during the qt build itself tools and libraries need to be taken from somewhere else than they are installed to. Change-Id: I956c43bd082afd465e690fe75d0bee3c2c0f7c25 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* don't generate make_default targetsOswald Buddenhagen2012-06-191-5/+3
| | | | | | | | | | | | make_first really means the same, as the default target is 'first' which immediately invokes make_first. as a nice side effect, this fixes ALL_DEPS not being used by the subdirs template's default target - make_default wasn't special-cased in the right place, while make_first is. Change-Id: I946cea3b2dae198eda61d31dbd19c6ccd15deac7 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* introduce ability to build projects for the host systemOswald Buddenhagen2012-06-191-3/+6
| | | | | | | | | | | | | | | | | when qmake runs into the new option(host_build) command, it will restart the project evaluation with a host spec. the new default host spec is called default-host (gasp!). it is overridden with the pre-exising -spec / -platform option, while the new -xspec / -xplatform option overrides the pre-existing default spec. specifying -spec but not -xspec will set the xspec, too, so the behavior is backwards-compatible. same for the XQMAKESPEC override read from .qmake.cache and the environment variable. the cleaner solution would be adding -hostspec, to be symmetrical with the override semantics, but that would deviate from configure in turn. Change-Id: I4297c873780af16ab7928421b434ce0f1d3820da Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* fix static library names when generating .pc files for pkgconfigMark Brand2012-04-191-1/+2
| | | | | | | | | 219a688ac17052e4bb3aac9ff8a813e3f4d8da01 added the version extension which only occurs on the DLL import library. Change-Id: Ie913adf039d7f3a9aadf43f4af014289a8aeacbe Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Hib Eris <hib@hiberis.nl>
* remove support for QMAKE_PLATFORM_DIROswald Buddenhagen2012-03-081-32/+0
| | | | | | | | | | this was a somewhat magic support for sysroots, automatically rewriting a number of path-holding variables. this was (as usual) completely undocumented, extremely fragile, and we are coming up with something better now anyway. Change-Id: I045910f532cb3efc839ea81c7a48f8db695e4092 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Merge remote-tracking branch 'origin/api_changes'Lars Knoll2012-03-041-1/+1
|\ | | | | | | | | | | | | | | | | | | Conflicts: dist/changes-5.0.0 mkspecs/features/qt_module_config.prf qmake/project.cpp qmake/property.cpp Change-Id: I6e4af40743a9aeff8ed18533a48036e332acc296
| * revamp -sysroot and -hostprefix handlingOswald Buddenhagen2012-03-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of being a variable added to the makespec (via qconfig.pri), QT_SYSROOT is now a property. the QT_INSTALL_... properties are now automatically prefixed with the sysroot; the raw values are available as QT_RAW_INSTALL_... - this is expected to cause the least migration effort for existing projects. -hostprefix and the new -hostbindir & -hostdatadir now feed the new QT_HOST_... properties. adapted the qmake feature files and the qtbase build system accordingly. Change-Id: Iaa9b65bc10d9fe9c4988d620c70a8ce72177f8d4 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* | get rid of Option::user_configsOswald Buddenhagen2012-03-021-4/+0
|/ | | | | | | | | merge them into before_user_vars. they are evaluated right after another anyway. Change-Id: I11859284b363fee01233f6e20989444fef711d0d Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* Add TARGET_VERSION_EXT to pkgConfiglibNameHib Eris2012-02-241-0/+1
| | | | | | | | | | | | | | | | | | | | The libName that is used in pkgConfig files should include the TARGET_VERSION_EXT. This is needed because in Win32MakefileGenerator::fixTargetExt(), the TARGET_VERSION_EXT is added to the library name. In Win32MakefileGenerator::processVars(), if TARGET_VERSION_EXT is empty, it is set to VER_MAJ. On platforms != Windows, TARGET_VERSION_EXT does not seem to be used. We probably got away with this so far because pkgconfig files generation for win32 was just added in 4.8 and nobody uses them yet, and because on platforms != windows the TARGET_VERSION_EXT is not used. Change-Id: I56f239e389f0ef926030e4c2376cadd92c4f673c Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Revert "Escape project file name in makefile rebuild rules."Andreas Hartmetz2012-02-231-4/+4
| | | | | | | | | | It was the result of miscoordination between Andreas Holzammer and me, duplicating the functional change of commit ea2c9f764fed654a57972223449f41e208e05863. This reverts commit 8b7a9b4898c85e81d87cf642ec59ce85e917ee35. Change-Id: I9a47746c1c12ca00b2dc5c5d50e99f9bf990e3f7 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Implement QMAKE_SUBSTITUTES.config = verbatim.Stephen Kelly2012-02-111-49/+61
| | | | | Change-Id: Ie0b333fa7fae2283e99e42f9cd7bab4e84991f40 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Escape project file name in makefile rebuild rules.Andreas Holzammer2012-02-111-4/+4
| | | | | Change-Id: I5407c2477613119b5aea2d00eb88cc24d35788ad Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Escape path names in qmake-generated Makefiles.Andreas Hartmetz2012-01-311-1/+1
| | | | | | | | | | | qmake-generated Makefiles since 4.6 (according to bug report) contain recursive qmake invocations with absolute paths to .pro files, where the absolute paths are not escaped. Task-number: QTBUG-11776 Change-Id: I49772c7d9147efea3bb7b9623c61d92aa0bb6857 Reviewed-by: Jonas Gastal <jgastal@profusion.mobi> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I311e001373776812699d6efc045b5f742890c689 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I431bbbf76d7c27d8b502f87947675c116994c415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* qmake wasn't handling spaces in names when dealing with extra installs.Kurt Korbatits2012-01-141-8/+8
| | | | | | | | | | | When installing extra binaries the paths where not being escaped, causing stripping and deleting to fail when dealing with filenames that contained one or more spaces. Change-Id: Iba4517b1110f6af30f7e2662cb86024a8b7b81f7 Reviewed-by: Kurt Korbatits <kurt.korbatits@nokia.com> Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* QMap => QHashOswald Buddenhagen2012-01-101-20/+19
| | | | | | | | | | | | this should make the evaluator quite a lot faster. the total win for qtbase/src is only 6%, though. i made some effort to avoid that output files get randomized. however, i didn't bother to keep debug output sorted. Change-Id: Id9cef4674c0153c11ebbb65cb63bf8c229eb56e3 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* qmake: Add object_parallel_to_source config optionTor Arne Vestbø2011-12-071-0/+23
| | | | | | | | | | | | | | | | | | | This solves the problem of two source files in the same project having the same name, which ends up with colliding object files. It also solves issues with moving files around in the source tree when the GNUmake option is used together with gcc_MD_depends, where the dependency file would end up with a dependency to the old source location. We already have object_with_source option, but that does not play nicely with shadow-builds. The new option tries to keep the same hirarcy in the output dir (while still respecting OBJECTS_DIR), as the sources. Any source with a path outside of the root project directory (absolute or relative, ../../foo.cpp), will be put inside the objects directory with the full path appended. Change-Id: I0c96291974f4801f4c55a26485d512b15c144c00 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* qmake: Don't assume that GNUmake is able to resolve arbitrary dependenciesTor Arne Vestbø2011-11-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Extra compilers may define a depend_command that's used to generate dependencies for each input. When GNUmake was enabled we failed to run this command, which was affecting resource files, as resource dependencies are handled by an extra compiler defined in resources.prf. The result was that changes to resources included in a resources-file did not trigger a re-run of qrc and subsequent recompile of the resource object file. We must always run these custom dependency commands, even when GNUmake (and the extended gcc_MD_depends option) is enabled, as GCC is only able to handle regular #include-type dependencies. Hence, the check for the 'include_deps' flag was removed from doDepends(), and the check for GNUmake was moved to the one place where it still made sense -- when deciding whether or not to do recursive dependency checking. Change-Id: I5ddb75c873120c90f798808efc52e81500786301 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com> Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* qmake: Allow extra compilers to have the makefile depend on its inputsTor Arne Vestbø2011-11-281-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | And enable this configuration option for the resource compiler. This results in a re-run of qmake whenever you touch a qrc file, which is needed to keep the dependencies up to date. Otherwise you might end up in the situation where you add a file to a qrc, edit the file some time later, but a rebuild does not regenerate a cpp file and compile that, so the final binary is stale. Technically this dependency problem is present for all source files, and qrc files are no different than any cpp file that you add a new header #include to, or adding a Q_OBJECT macro to a header. To pick up these changes we have to re-run qmake, so that qmake can run its internal dependency checking, and any extra compiler dependency commands. The reason we're making this change for rcc files it that conceptually people treat them as a "project" files, and expect them to behave similarly to .pro or .pri files, in that editing the file will invalidate the makefile. In practice this is often what happens when adding new headers, as you touch the project file when changing the HEADERS variable. Task-number: QTBUG-13334 Change-Id: If69149678e7fba6d812d31dcc17877427f9a6122 Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com> Reviewed-by: Kai Koehne <kai.koehne@nokia.com>