| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Change-Id: Ib7f9a00bb891fa39c5bc1f891ddbfba1e4d23227
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
| |
Change-Id: If09122d2beb678e075e40a967a1b9d4d7d24c67d
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
| |
Change-Id: I02715cda889f9f271a4372b0dec70645674f8843
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
| |
Change-Id: I3c9e5d5512cad7028026d6166a0783fd507e7826
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Split Loader into ItemReader, ModuleLoader and ProjectResolver.
Get rid of our three QScriptClass derivatives and replace them with
one, named EvaluatorScriptClass. The complete knowledge about the
project structure is held by a tree of Item objects that are
independent of QScript* objects and thus are prepared to be
serialized.
Change-Id: I53e23426d55e7de9cec6f9f29da55fb9c4704d71
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
| |
Their project files are mostly identical, so introduce auto.pri.
Also remove outdated and unused test "dependencyFinder".
Change-Id: Ibe7f40cf1b0e28719fbf91a905379432a0359968
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
| |
Change-Id: Ia1239e59d35001d7cdf5655c9fc29b5a3c000f69
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We don't want our code to be duplicated in memory for each application
that uses it, so the library should not be linked statically.
Some ramifications worth mentioning:
- The unit tests had to be moved into the library,
because otherwise we would need to export random
internal symbols. This is why the patch appears so big.
A follow-up patch should probably make compilation
of tests optional, so the library can be deployed without
unneeded code.
- The DESTDIR of the auto test executables is now the
same as the one of all other executables, so they
can all use the dll on Windows without additional
setup.
- Some internal symbols were exported, namely:
a) Logging-related stuff. This allows us to use
a uniform logging approach in the library and in
our command-line tools; I consider this acceptable.
b) A handful of classes and functions currently needed
by certain command-line tools. These seem more questionable
to me and we should probably find a different way to implement
the respective functionality.
Change-Id: I9cd21e12cd622b55cf62f5e04ad398734410ede1
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
| |
Change-Id: I2332bb0ad1b03db1ab4c5d56e441e342f807f50c
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
| |
Change-Id: I1e4af7cebd755b5965a2e3bca9909212394b4532
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Applications may not want to use the same log sink for all builds.
The logging facility is also decoupled from the command-line client in other
ways:
- The LogWriter modifiers for output channel and text color are gone,
since this type of decision should not be made by low-level code.
Instead, the "highlight" string can be forwarded to the log sink.
- The console logger now lives in app/shared, as it must never be used
by library code.
Change-Id: I8863a554c9b74577320ef23f6f934a74e0f0cbb0
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
| |
Change-Id: I46a1089323a191c71c00522f1b96c2fdd700039f
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
| |
Change-Id: If442778b8fc5830639bbea17e423bc3d0414ca23
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
| |
It comprises the parameters specific to resolving a project. This way,
fewer function parameters have to be dragged along the call chain.
Change-Id: I224b090c1ad924213dad3236141f27971e64c965
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
|
| |
This is inherently application-specific. Therefore, the library must not
instantiate the Settings class itself anywhere; instead, a pre-allocated
object comes in via the API.
Change-Id: I04a101d5535508b9e165123b4efe06d957c0d171
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
| |
The loader needs an absolute project file path now.
Change-Id: I3fc19e7c27a7afd81d187dec779d1793d6733442
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
| |
Behaviour of bash with globstar option is reproduced
Change-Id: Ibedd640084c398c9141d0d91bd37868235eae1e5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This decouples building and installing, e.g. allowing
the latter to be executed by a privileged user
to a system-wide directory.
In addition, the ability to install build artifacts
(typically executables or libraries) has been added.
Change-Id: I28e725e4c1168eebe88e12c75e3d3e9f5fe28ca5
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
| |
Disabled products are in the project now.
Change-Id: Ied88ad238e189e42a3e771cf49a68d14ae726c5b
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This feature is in desperate need of simplification, since the
current semantics are not clearly defined. The main
culprit for that is the ability to use wildcards in
directory names, which leads to all sorts of
problems, especially in combination with the "recursive" flag.
We therefore disallow that now: Wildcards can only be used
to match actual files. This results in clear semantics that
are easily understood and can actually be documented.
Change-Id: If8a950e1c1a362ce9fb57a1c9789a83ea7c8b3ba
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
| |
Change-Id: Ic2962e57ede037b910d7e77b01b0163f0a22cb7d
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
| |
Change-Id: Ib46a92f3887aefcb4ae4351769d1d5acce8e7b4d
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
| |
Task-number: QBS-176
Change-Id: If64721c730be94c3d918fe1b3dd000272de4059c
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
| |
Change-Id: I79bdc75f6e5ce08becc4ca2e8fd9b66ef498f8f5
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
| |
Avoid implicit destructors
Change-Id: If8699e1308adf567c27d1419d1e07e5abb8de973
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While it seems elegant at first glance to do typedefs in class scope, it
has one serious drawback: Forward declarations become impossible unless
they use the non-typedef'ed type name, which defeats the purpose. As a
result, dozens of headers currently include language.h and buildgraph.h,
even though they technically don't have to.
Fix this by introducing special forward-declaring headers and doing the
typedefs there, outside the class scope. Now changes to header files
included in language.h or buildgraph.h don't ripple through half the
project anymore.
Along the way, also remove unneeded and potentially harmful INCLUDEPATH
statements from various pri files.
Change-Id: Ib50db850876955216db7f39b6099c32d1239092b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
| |
This is necessary to link against Qt Creator which has its own
private copy of QmlJS which interfers with the one in qbs.
Change-Id: Ia0a353ca2d5260fd5978e10c8f83f44b3728a20d
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
|
|
|
|
|
|
|
| |
Multiple occurences of the same search result must not be counted.
Change-Id: I8200a3c6da425c3796591fe23234ddb2500da599
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
| |
Do not use DEPENDPATH but CONFIG+=depend_includepath.
Do not add "." to INCLUDEPATH.
Change-Id: I3532833aef13d32f8278074283fcd12256d38143
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
| |
Replace the naive sourceCode.contains(...) calls with a proper AST
traversal when looking for the use of "base" or "outer" identifiers.
Introduced the class IdentifierSearch.
Change-Id: I5892002ed061b8bb3ff724470c6ab1f09ddb8018
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
It's full of stuff that is only used in the Loader class itself,
completely obscuring the interface. Move all of that to the
source file.
Also don't force clients of the class to call both loadProject()
and resolveProject(); introduce a new function that does both.
Change-Id: I35063a3728ac35888c2bbc7616b356be4bb8018d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We offer the following services:
- Build a number of projects.
- Build a number of products.
- Retrieve the project structure.
- Find the executable for a product.
- Set up an environment to run a shell or
a target (mainly interesting for our command-line client).
In order not to leak internal data, some parallel data structures
have been introduced for external access to project information
such as source files etc. These are intentionally minimal and
can be extended once use cases arrive.
Note that the Group class has been renamed to ResolvedGroup,
so we can use the simple name for the external API.
Change-Id: I6dc5d7914ee9b232098a55f9d3b0e725debe3bc8
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
|
| |
The central class of the public API should have a name that suggests its
role to clients, so we call it "QbsEngine". The class currently using
this name is now called "ScriptEngine".
Change-Id: I77eba4618a3e1313c2d3a43fe29585aad638da4e
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
| |
This reverts commit c39e9a0715c4469c78a1e797426db6d94df51c4c
The commit is correct in principle, but was prematurely merged and should have been based on an additional patch.
Change-Id: Id5920491fa948ac48f304797f5ec959b28e9ac25
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
| |
The central class of the public API should have a name that suggests its
role to clients, so we call it "QbsEngine". The class currently using
this name is now called "ScriptEngine".
Change-Id: I6c3e6d5770ac8b096d9515cbe5762fe97346ab7e
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When importing a JS file, a JS object X is created that contains the
evaluated code. Due to the importer's implementation, X is a former
activation object that's been pulled out of a new context.
When evaluating a Scope property, we call setActivationObject. This
replaces - and thus destroys - the first script value in the scope chain
that is of the internal type "activation object".
That's why X got destroyed when evaluating qbs module values from code
that lives in X.
We're solving this issue by copying all properties of the activation
object into a fresh and clean JS object. Thus we're avoiding any special
handling of activation objects.
Change-Id: Ibbf3ecca961a781d4a3e0886308f90ae48ecadba
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment, every declaration of a class inheriting from
PersistentObject has to include the template-heavy persistence.h file,
causing it to transitively be included in pretty much every source file.
By decoupling PersistentObject from that header, we get rid of a bunch
of unneeded compile dependencies, speeding up compilation in general and
especially if something in persistence.h changes.
Change-Id: I1a95390015f75bdfca0d139144fa5c54c7971dc4
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
Along the way, rename some things to help understand them:
- Configuration -> PropertyMap
- Rule::fileScript -> Rule::fileName
Change-Id: Ibff62526fe8e0be92b23456c942665ebb7db10dc
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
| |
Task-number: QBS-139
Change-Id: I8c0e9f0574859c26abe7ead2e64aa0ecd4bfa3ec
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
| |
As discussed on the ML before, overrideTags defaults to true.
Add a test for this property and some documentation.
Change-Id: Id09af0a8040ef6eaf330b762ff9603fce0748af2
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
To access the project's group structure from the IDE
we must make sure to mirror that correctly in ResolvedProduct.
Until now we just maintained a flat file list plus the wildcards
desriptions which were called "Group".
Change-Id: I5b86784d792ecb61fe2854f01a8200564d0c9d99
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
The way of preventing qmake from building in
debug/release subdirectories on Windows is
DESTDIR = ./
Don't ask why. Just accept defeat.
Change-Id: Iec3faa864e73f5016148ecab6f128ab0cb104fd5
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
| |
Change-Id: I637502f149308e45701a42524ca15d0e6f9fc8f2
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
One can now name file groups. This is for display purposes in IDEs.
Example:
Group {
condition: qbs.targetOS === "linux"
name: "Linux specific files"
files: [
"myfile_linux.cpp"
]
}
Change-Id: I84c31a9b99212af1dc53eb936c628320c979828c
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
The only thing left now are the classes whose names would
clash if they were in the same namespace.
During the move, it turned out we have quite a number of
logging-related facilities, so introduce subdir "logging".
Change-Id: I3b673cd4f75e2ca61605a88886cfcdcac6d6bcd6
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
|
|
|
| |
The Configuration class is the set of properties that is attached to a
product or an artifact. Do not misuse this as build configuration to set
up the build.
Change-Id: Idfdaae2ddbe205292e054772d51562a0162a308a
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
|
|
| |
This enables us to run all tests with "make check".
Change-Id: I9ea1816c88c1c0d27fb8dda4cf6ca46b13cb8fc0
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
| |
Do not use debug/release subdirectories on Windows to make it easy
for the testRunner tool to find tests.
Change-Id: I3bc572c7959c6bcc7cd7e12e1f5d4bb6ccb0753c
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|
|
|
|
|
|
|
|
| |
It contains facilities for console logging, and its name should reflect
that.
Change-Id: Ib9fc7679b754fe813cdccfd00e6269bce17b675d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
|
|
|
|
|
| |
Change-Id: I972bea425982baaf3edc330bc88973f78014710b
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
|