Mikko Rasa [Mon, 3 Jun 2019 12:37:02 +0000 (15:37 +0300)]
Use a more appropriate check for adding -m<bits> flag
The bits check was redundant because it's already included in the native
flag. On the other hand -m<bits> is not supported on all architectures,
in particular on ARM.
Mikko Rasa [Thu, 30 Aug 2018 11:01:33 +0000 (14:01 +0300)]
Use -rpath (or -rpath-link) when linking
It avoids the need to use LD_LIBRARY_PATH when running programs linked
against custom libraries. The default build types have been amended so
that debug builds use an absolute rpath. This allows them to be run from
the source tree. Release builds use a relative rpath to make them more
easily relocatable in the filesystem.
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.