Mikko Rasa [Sat, 11 Oct 2014 04:36:01 +0000 (07:36 +0300)]
Better algorithm for ordering static libraries
Put each static library dependency immediately after the library that
required it. This way, if a tool includes a static library in its own
build_info (such as gnustl_static for AndroidCxxCompiler), it will be
placed last and be available for all other static libraries.
Mikko Rasa [Fri, 10 Oct 2014 16:35:44 +0000 (19:35 +0300)]
A bunch of new tools and targets to build Android packages
Currently can only build apks using NativeActivity and debug key, and
will probably break if the package has a version. Still, it's useful
in certain configurations so I'll commit this version now and continue
improving it.
Mikko Rasa [Fri, 10 Oct 2014 10:07:56 +0000 (13:07 +0300)]
Better incpath logic in AndroidCxxCompiler
Don't expose the private directory through system_path, since programs
are not suppose to #include those files directly. Also use architecture
to determine which subdir to pick.
Mikko Rasa [Mon, 6 Oct 2014 20:43:34 +0000 (23:43 +0300)]
Drop support for generic tarball components
I originally envisioned using them for creating binary release tarballs,
but that turns out to be a less than spectacular idea. Tarballs only
really work as a distribution format on Linux. Other platforms either
use a different archive format or require more complicated preparations.
Mikko Rasa [Mon, 6 Oct 2014 00:13:37 +0000 (03:13 +0300)]
Split Component into several subclasses
The create_targets function in particular was rather unwieldy and
contained four completely separate branches. Having distinct component
types in different classes will also enhance modularity.
Mikko Rasa [Fri, 3 Oct 2014 23:08:48 +0000 (02:08 +0300)]
Rudimentary support for compiling things for Android
At the moment programs are compiled as if for a desktop system. Creating
graphical applications in this way is difficult, as it requires different
build rules to compile the application code as a .so and some boilerplate
to wrap it in a .apk with a NativeActivity.
Mikko Rasa [Fri, 3 Oct 2014 22:04:28 +0000 (01:04 +0300)]
Add sysroot support for BuildInfo and compilers
Embedded SDKs commonly ship with a sysroot to use with their compilers.
It might also come useful for compiling things for different Linux
distributions.
Mikko Rasa [Wed, 25 Sep 2013 17:19:57 +0000 (20:19 +0300)]
Move nested build signature creation to FileTarget
This way the same code can be used by different target classes that need
it. In particular, both Binary and StaticLibrary need nested signatures,
and FileTerget is their closest common base.
Mikko Rasa [Thu, 22 Aug 2013 12:06:07 +0000 (15:06 +0300)]
Check an ObjectFile's dependencies again if a dependency is modified
This is necessary to get generated sources to behave correctly. Includes
can only be read after they're built for the first time. The ObjectFile
must then add the necessary dependencies to ensure that required headers
are installed.
Mikko Rasa [Thu, 22 Aug 2013 12:03:03 +0000 (15:03 +0300)]
Add transitive dependencies for source files
This eliminates a problem where includes in C source files would cause
generates sources to be rebuilt if any of the included files changed.
Includes should only affect the object file built from the source file,
not the source file itself.
Mikko Rasa [Thu, 9 May 2013 07:12:52 +0000 (10:12 +0300)]
Improvements for handling side effects
Propagate rebuild from side effects to the primary target. This can
happen if the side effect does not exist for whatever reason. As an
additional safeguard, redirect any build attempts on side effects to
the primary target.
Mikko Rasa [Wed, 8 May 2013 09:36:22 +0000 (12:36 +0300)]
Store problems at their source rather than globally
This allows finer granularity in determining whether problems are
preventing a build. In some cases it may be desirable to build just one
component of a package, even if others have problems.
Mikko Rasa [Fri, 26 Apr 2013 16:48:39 +0000 (19:48 +0300)]
Fix bootstrap.sh to work when multiple identically named headers
Previously the overlay -iquote flags for all source directories were
applied to all files, so the compiler included the wrong file. The fix
is to compile files one by one and only add the flags that are needed
for each.
The temp directory will now be deleted by default. An option to keep
it was added.