summaryrefslogtreecommitdiffstats
path: root/qmake/generators/makefile.cpp
Commit message (Collapse)AuthorAgeFilesLines
* consolidate generation of metafile install targetsMark Brand2013-01-251-0/+21
| | | | | | | | | Metafiles such as .prl and .pc files contain paths that have to be adjusted during installation. The same code is used for unix and windows so move it into the base class. Change-Id: I82db89ec83820a4fa0214ba15e7cd63438f6dc91 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* do not fixify + create QMAKE_{PKGCONFIG,LIBTOOL}_DESTDIROswald Buddenhagen2013-01-081-2/+2
| | | | | | | | | these variables are somewhat magic: they are relative to DESTDIR, and they also specify the installation location relative to target.path. the actual output directories are created by other code. Change-Id: Iead3006057516f5a49b6fd4bd8996a062c984fce Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* centralize MAKEFILE writeout betterOswald Buddenhagen2012-12-051-9/+4
| | | | | | | | | nmake depends on a variable being assigned before it is referenced, so just write it out to every Makefile as the very first thing. this is nicer than the previous hack anyway. Change-Id: I50f409919352f560f7ef6c848a2f7c51d1878148 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* assign MAKEFILE even in non-subdirs MakefilesOswald Buddenhagen2012-11-271-0/+5
| | | | | | | | | | | | this is necessary for having a clean way to recurse even from leaf makefiles. the location where the variable is written in the makefile is somewhat bizarre, but the code is so convoluted that finding a better place would mean either a lot of duplication or a lot of prior refactoring. Change-Id: I68e4cf7e3814f6c60b2e3421d69775c993dafb23 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* complain about empty $$TARGETOswald Buddenhagen2012-11-131-0/+3
| | | | | | | this should be fatal, but so should be a lot of other conditions. Change-Id: I0c2c0bb9590ea1e4d0eae76e29eda34915914217 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* do not add DEPENDPATH to VPATHOswald Buddenhagen2012-11-021-1/+1
| | | | | | | | | | | | | | DEPENDPATH merely says where to look for impliciit dependencies, not where to find explicit ones. fwiw, the other way round may be considered correct, but DEPENDPATH exists for the sole purpose of limiting which paths should cause recompilations, so it would be counterproductive to extend with with VPATH. Task-number: QTBUG-11912 Change-Id: I86450b5fd5aeb1f1b015b53f0adcd167ff4ce04d Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* qmake ExtraCompilerTargets: deal with file name which contains spaceDebao Zhang2012-10-191-1/+1
| | | | | | Task-number: QTBUG-27629 Change-Id: I6d6c3345cc1bb0a866524df3a1534ed50fc00f3e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Remove addition of dependencies for static libraries.Stephen Kelly2012-10-161-7/+0
| | | | | | | | | | | | | | | | | | | | | The content in the prl file is not compatible with what CMake expects in the value of the IMPORTED_LINK_INTERFACE_LIBRARIES property. That property expects a list of IMPORTED targets or full paths to libraries. The prl file gives us a whitespace separated string of content suitable for passing to ld, that is, it contains -L and -l content. As this would take a lot of error prone parsing in cmake code in order to resolve the content to a list of full paths to libraries (which can be processed by any cmake generator), it's better to remove the code until qmake is able to generate a list of full paths. Change-Id: I72fe8e862b7f3bd25a7f9a03db94d2e9b815d08a Reviewed-by: Brad King <brad.king@kitware.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Clinton Stimpson <clinton@elemtech.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Generate ';' separated libraries in prl files for CMake.Stephen Kelly2012-10-091-0/+7
| | | | | | | | | | | | | | | | | | The generated CMake files need to pass ';' separated libraries to the IMPORTED_LINK_INTERFACE_LIBRARIES property, otherwise we get errors such as this: http://testresults.qt-project.org/ci/QtTools_master_Integration/build_00386/win32-msvc2010_Windows_7/log.txt.gz (grep for QtCore5.lib.lib) Rather than a naive and error prone replacement of whitespace, generate the appropriate ';' separated content directly in the qmake prl file. Change-Id: I8eb5e233a0318b57ec74b86d910583ff99c29415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com> Reviewed-by: Brad King <brad.king@kitware.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Use QStringList::join(QChar) overload where applicable [qmake]Marc Mutz2012-09-211-24/+24
| | | | | | | | | | This is an automated change performing the following replacements: join\("(.)"\) -> join('\1') join\(QLatin1String\("(.)"\)\) -> join(QLatin1Char('\1')) join\(QStringLiteral\("(.)"\)\) -> join(QLatin1Char('\1')) Change-Id: I9c9964703dedfdab6e7bfac80be22bd5570e2e49 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* replace qmake_version() with a simple string literalOswald Buddenhagen2012-09-131-1/+1
| | | | | | Change-Id: I12e715aab23e01267e8a1434a3a965276c1a6182 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* give location information for QMAKE_SUBSTITUTES conditionalsOswald Buddenhagen2012-09-111-2/+2
| | | | | | Change-Id: I9b6bee252d4ed4bf263394ace29a4fb3b324a8cd Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* port qmake to qt creator's qmake language evaluatorOswald Buddenhagen2012-09-111-3/+3
| | | | | | | | | | | | | | | | | | | | | this is a monster commit which does the following things: - import the evaluator as-is from qt creator into qmake/library/ - integrate it into qmake's makefiles - overwrite proitems.h with actual special types - remove the parts of Option which are redundant with QMakeGlobals - make QMakeProperty a singleton owned by Option::globals. the dynamic handling so far made no sense. - make QMakeProject a subclass of QMakeEvaluator, with relatively few extensions the changes to existing qmake code outside project.* and option.* are minor. implementing the changes gradually would mean changing a lot of code which will be just replaced in the next commit, so i'm not wasting my time on it. Change-Id: I9746650423b8c5b3fbd8c3979a73228982a46195 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Removing duplicate includesSergio Ahumada2012-09-091-1/+0
| | | | | | | Do not include a header more than once Change-Id: Ia2e5d66e72988ad833cf5177a3f8aa988bf510e9 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* introduce qmake variable abstractionsOswald Buddenhagen2012-09-071-406/+531
| | | | | | | | this is preparation for adapting to a new evaluator. Change-Id: I6fc59f5525735754a00afa6629fbfe257e84db97 Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* remove pretenses of supporting projects on stdinOswald Buddenhagen2012-09-051-6/+3
| | | | | | | | | | this may have worked a decade ago, but now it only produces funny Makefiles (and needs hacking main.cpp). the feature doesn't seem *too* important, so just clean it out. Change-Id: I50a60b0e30341f0b523e4a5731c770c9c1013f8b Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* make QMakeMetaInfo a little less inefficient with libtool .la filesOswald Buddenhagen2012-09-051-1/+1
| | | | | | | | | don't read the spec from scratch for every library just to get QMAKE_LFLAGS_RPATH. we can perfectly use our current project for that purpose. Change-Id: I4e408b3fd5de81652181df032aa53cd8f2f8f806 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* micro-optimize: use POD-initializable lists of variable namesOswald Buddenhagen2012-08-281-10/+10
| | | | | Change-Id: I3732fef509b358949ef90002dbfc1960360afef8 Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
* remove unused checkMultipleDefinition()Oswald Buddenhagen2012-08-281-23/+0
| | | | | Change-Id: I533c2091333942f145063ad04f4420b7a2de0a37 Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
* remove dead variable assignmentsOswald Buddenhagen2012-08-281-2/+0
| | | | | | Change-Id: I032e9116ca1b7250497f56ea26103f2173f0fc09 Reviewed-by: Daniel Teske <daniel.teske@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* qmake: object_with_source feature removedJoerg Bornemann2012-08-171-6/+1
| | | | | | | | | | | By putting object_with_source into CONFIG one could force qmake to output each object file into the same directory as its source file came from. This was a rather nasty work-around from Qt 3 times to support source files with the same file name in a project. Unfortunately this doesn't play nicely with shadow builds. Change-Id: Ie79e14d36ba6eac4219edc14ea75ab6a96f9ea96 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* revamp preparation of command line for qmake calls in makefilesOswald Buddenhagen2012-08-141-45/+7
| | | | | | | | | | | | | instead of re-assembling a list from the variables, take the original command line minus some explicitly stripped out options. this is way less code and poses no synchronization problem between the two parts. as a "side effect", variables obtained from $QMAKEFLAGS won't multiply with each makefile nesting level, as the generated command line won't replicate data obtained from the environment. Change-Id: I5d1ce0f11efb338f60405529f9818910103b1b0e Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* support installs with target dirOswald Buddenhagen2012-08-081-8/+42
| | | | | | | | | this adds a .base "member" to the install "structure". if specified, only this much is stripped from the front of each element of .files, rather than the entire path, to obtain the target filename. Change-Id: Ic39fcf71c4ad874ffabbbad113be9cdc6e3f7260 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* reshuffle assembly of install commands as wellOswald Buddenhagen2012-08-081-24/+16
| | | | | | | | don't make a single string, but a string list which is join()ed in the end. this is a tad slower, but the code is way easier to work with. Change-Id: I1ff7168c2770998761a6081be8080c743ddc94a1 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* reshuffle assembly of uninstall commandsOswald Buddenhagen2012-08-081-12/+9
| | | | | | | | | make a proper stringlist of commands, and join it in reverse order only at the end. the reversal ensures that we can cleanly fold up directory hierarchies we may build. Change-Id: I9a241361588a6965283aec5258e1d622b35514e0 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* remove pointless appending of trailing dir separator under unixOswald Buddenhagen2012-08-081-2/+0
| | | | | Change-Id: Ia9b181db57ac2ee93cd412d58fe6ecbc5637a2f0 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* respect copy_dir_files with manually flagged directories as wellOswald Buddenhagen2012-08-071-3/+5
| | | | | | | otherwise the second installation on unix would be bogus. Change-Id: I162533ee262c6820e7e2d4710b5342cafecd9d59 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* remove not particularly useful branchOswald Buddenhagen2012-08-071-4/+1
| | | | | | | | | we just determined that the file does not exist, so it's entirely pointless to query its type from the file system. consequently, the respective fallback branch would assume a regular file anyway. Change-Id: I42590ffc2a5f650fb430a9398cb1859217ed4350 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* remove clearly bogus escapeFilePath() callOswald Buddenhagen2012-08-071-1/+0
| | | | | | | | the value is still re-processed numerous times, end each "exit path" does own escaping, while not every path can deal with an escaped path. Change-Id: I0bf4a043809bf4b7877d02e5d8dfe8f794a7dd00 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Remove references to Borland and bmakeAndy Shaw2012-08-011-103/+36
| | | | | | | | | Remove references to an old compiler that has not been supported for a long time. Also remove Borland specific configuration flags which have no meaning elsewhere. Change-Id: I3634a52b78f737ea972073e14c2b6669dcd0ae63 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* 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>