Mikko Rasa [Sun, 8 Jul 2018 14:47:49 +0000 (17:47 +0300)]
Use build info to store static library dependencies
In some cases it's desirable to link a particular library statically but
use dynamic linking for its dependencies. In particular, libpng and
libvorbis depend on libm, which is considered a part of libc and must be
linked in the same way. Now all libraries are looked up according to
libmode, making such linking possible.
Mikko Rasa [Fri, 1 Dec 2017 07:48:37 +0000 (09:48 +0200)]
Collapse the language-specific compilers into a single class
There's very little differences between languages of the C family, but on
the other hand different platform SDKs need their own tweaks. It makes
more sense to abstract by platform rather than by language here.
Mikko Rasa [Tue, 13 Oct 2015 19:55:10 +0000 (22:55 +0300)]
Allow features to be exported
While overlay directories are generally preferred, sometimes it's not
worth the effort for a small feature. In those cases the -D switch needs
to be applied to any package that might use the library's headers.
Mikko Rasa [Tue, 13 Oct 2015 19:32:20 +0000 (22:32 +0300)]
Pass language standards through dependencies
If a library uses a particular standard in its headers, all packages that
depend on it should use that standard as well (unless overridden at the
package).
Mikko Rasa [Mon, 10 Nov 2014 18:50:35 +0000 (20:50 +0200)]
Deal with static build flags for binary packages
Some libraries have internal dependencies to other libraries, which are
automatically pulled in with dynamic linking, but need to be manually
specified to the linker when linking statically.
Mikko Rasa [Mon, 10 Nov 2014 17:51:44 +0000 (19:51 +0200)]
Fix DataCollection dependencies
Since DataTransform is not buildable, it won't get a rebuild flag even if
its dependencies change. Thus the dependencies must also be added to
DataCollection.
Mikko Rasa [Sat, 11 Oct 2014 06:35:21 +0000 (09:35 +0300)]
Add a list of symbols to keep in the binary to BuildInfo
The linker normally does not pull unnecessary symbols from static
libraries, which can cause problems if those symbols are meant to be
referenced externally.
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.