]> git.tdb.fi Git - builder.git/log
builder.git
6 years agoUse build info to store static library dependencies
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.

6 years agoDon't crash if the executable of a GnuCompiler is not found
Mikko Rasa [Mon, 25 Jun 2018 21:15:36 +0000 (00:15 +0300)]
Don't crash if the executable of a GnuCompiler is not found

6 years agoUse $sdk_root/ndk-bundle as default path for Android NDK
Mikko Rasa [Mon, 4 Dec 2017 08:15:24 +0000 (10:15 +0200)]
Use $sdk_root/ndk-bundle as default path for Android NDK

It's now available for download through the SDK manager, which installs it
in this location.

6 years agoRecognize and use the common sysroot in newer Android NDKs
Mikko Rasa [Mon, 4 Dec 2017 08:06:41 +0000 (10:06 +0200)]
Recognize and use the common sysroot in newer Android NDKs

6 years agoClean up compiler and linker constructors
Mikko Rasa [Sun, 3 Dec 2017 15:05:28 +0000 (17:05 +0200)]
Clean up compiler and linker constructors

Now that the system path is populated in do_prepare, it's no longer
necessary to pass the sysroot as a constructor parameter.

6 years agoAlso get the linker system path from the actual linker program
Mikko Rasa [Sun, 3 Dec 2017 11:08:24 +0000 (13:08 +0200)]
Also get the linker system path from the actual linker program

6 years agoRevert to default system path for GnuCompiler is autodetection fails
Mikko Rasa [Sun, 3 Dec 2017 09:13:29 +0000 (11:13 +0200)]
Revert to default system path for GnuCompiler is autodetection fails

6 years agoImprove problem reporting for the Android toolchain
Mikko Rasa [Sat, 2 Dec 2017 21:31:24 +0000 (23:31 +0200)]
Improve problem reporting for the Android toolchain

Rather than throwing exceptions with cryptic messages, add the problems
to the tools' problem lists.

6 years agoMake AndroidCompiler more robust about detecting the cxx-stl location
Mikko Rasa [Fri, 1 Dec 2017 13:27:47 +0000 (15:27 +0200)]
Make AndroidCompiler more robust about detecting the cxx-stl location

On recent NDK versions the toolchain reports its version as 4.9.x but the
cxx-stl directory is still 4.9.

6 years agoHave SubTool automatically pass calls to the parent tool
Mikko Rasa [Fri, 1 Dec 2017 11:09:22 +0000 (13:09 +0200)]
Have SubTool automatically pass calls to the parent tool

6 years agoInterrogate the compiler for the system path
Mikko Rasa [Fri, 1 Dec 2017 11:08:09 +0000 (13:08 +0200)]
Interrogate the compiler for the system path

Rather than trying to guesstimate it from the compiler version.

6 years agoImprove ExternalTask::run_and_capture_output
Mikko Rasa [Fri, 1 Dec 2017 11:03:46 +0000 (13:03 +0200)]
Improve ExternalTask::run_and_capture_output

Redirect input from /dev/null and allow stderr to be captured as well.

6 years agoPrepare tools before querying their system path in the VFS
Mikko Rasa [Fri, 1 Dec 2017 09:18:24 +0000 (11:18 +0200)]
Prepare tools before querying their system path in the VFS

6 years agoCollapse the language-specific compilers into a single class
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.

6 years agoCombine the gnu and clang toolchains into SystemToolchain
Mikko Rasa [Fri, 1 Dec 2017 07:12:13 +0000 (09:12 +0200)]
Combine the gnu and clang toolchains into SystemToolchain

6 years agoAdd FPU specification to Architecture and GnuCompiler
Mikko Rasa [Thu, 16 Nov 2017 12:28:28 +0000 (14:28 +0200)]
Add FPU specification to Architecture and GnuCompiler

7 years agoDon't treat using deprecated declarations as errors
Mikko Rasa [Fri, 6 Jan 2017 02:49:43 +0000 (04:49 +0200)]
Don't treat using deprecated declarations as errors

They can be impossible to avoid sometimes if a non-deprecated replacement
is not available.

7 years agoAttach component information to data source files
Mikko Rasa [Fri, 6 Jan 2017 02:46:48 +0000 (04:46 +0200)]
Attach component information to data source files

7 years agoCompilation fix
Mikko Rasa [Fri, 6 Jan 2017 02:36:15 +0000 (04:36 +0200)]
Compilation fix

Erase with const_iterator is allowed in C++11 so I didn't notice this
before.

7 years agoOnly use source files that are actually files
Mikko Rasa [Thu, 5 Jan 2017 23:02:52 +0000 (01:02 +0200)]
Only use source files that are actually files

And not, say, directories.

7 years agoSupport source generators that combine multiple files into one
Mikko Rasa [Fri, 18 Nov 2016 21:06:20 +0000 (23:06 +0200)]
Support source generators that combine multiple files into one

Some existing tools have processing unit annotations too, but for some of
them it's not clear what the unit should be.

7 years agoCheck for some errors in SourceGenerator
Mikko Rasa [Fri, 18 Nov 2016 20:29:49 +0000 (22:29 +0200)]
Check for some errors in SourceGenerator

8 years agoChange the suffix of modules
Mikko Rasa [Sat, 29 Oct 2016 16:44:24 +0000 (19:44 +0300)]
Change the suffix of modules

.m is already used by Objective-C.  It seems there's some precedent of
.dlm as Dynamic Link Module.

8 years agoUse correct library path for libraries from the containing package
Mikko Rasa [Sun, 9 Oct 2016 12:08:52 +0000 (15:08 +0300)]
Use correct library path for libraries from the containing package

8 years agoCheck DataTransform's directory mtime against cache mtime
Mikko Rasa [Tue, 4 Oct 2016 14:42:18 +0000 (17:42 +0300)]
Check DataTransform's directory mtime against cache mtime

Transforms commonly contain wildcard patterns, so the set of source files
may change without the transform itself changing.

8 years agoAdd .lib as a static library suffix for Windows
Mikko Rasa [Tue, 4 Oct 2016 14:41:50 +0000 (17:41 +0300)]
Add .lib as a static library suffix for Windows

8 years agoExplicitly add -lmingw32 before any other libraries
Mikko Rasa [Fri, 16 Sep 2016 22:32:45 +0000 (01:32 +0300)]
Explicitly add -lmingw32 before any other libraries

This fixes linking when WinMain() is in a library (such as libmspcore)
and shouldn't be harmful when it isn't.

8 years agoUpdate cross prefix for windows architecture
Mikko Rasa [Fri, 16 Sep 2016 22:31:24 +0000 (01:31 +0300)]
Update cross prefix for windows architecture

8 years agoAdjust the find command line
Mikko Rasa [Sun, 31 Jan 2016 15:12:22 +0000 (17:12 +0200)]
Adjust the find command line

The list syntax is a GNU extension, so use -false and -o to achieve the
same effect.

8 years agoSet the debuggable flag in Android manifest if debug is set in build info
Mikko Rasa [Thu, 19 Nov 2015 09:01:24 +0000 (11:01 +0200)]
Set the debuggable flag in Android manifest if debug is set in build info

8 years agoAllow Android application permissions to be set in Build file
Mikko Rasa [Thu, 19 Nov 2015 08:57:02 +0000 (10:57 +0200)]
Allow Android application permissions to be set in Build file

9 years agoMinor cleanup to the BuildInfo class
Mikko Rasa [Sat, 31 Oct 2015 15:27:31 +0000 (17:27 +0200)]
Minor cleanup to the BuildInfo class

9 years agoPass language standards throuhg ALL dependencies
Mikko Rasa [Sat, 31 Oct 2015 15:25:45 +0000 (17:25 +0200)]
Pass language standards throuhg ALL dependencies

Not just direct ones.  I really don't know why I put it in the !=CHAINED
block.

9 years agoAllow features to be exported
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.

9 years agoRecent versions of sigc++ require C++11
Mikko Rasa [Tue, 13 Oct 2015 19:52:18 +0000 (22:52 +0300)]
Recent versions of sigc++ require C++11

9 years agoPass language standards through dependencies
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).

9 years agoFix bootstrap to handle overlays in a more generic way
Mikko Rasa [Mon, 9 Mar 2015 16:58:40 +0000 (18:58 +0200)]
Fix bootstrap to handle overlays in a more generic way

9 years agoInclude the threads flag if a static library needs it
Mikko Rasa [Tue, 11 Nov 2014 07:16:15 +0000 (09:16 +0200)]
Include the threads flag if a static library needs it

9 years agoDeal with static build flags for binary packages
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.

9 years agoFix DataCollection dependencies
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.

9 years agoUse parameterless system path accessors
Mikko Rasa [Mon, 10 Nov 2014 17:49:30 +0000 (19:49 +0200)]
Use parameterless system path accessors

Since the -C option causes a chdir early in the initialization, an argv[0]
of "./builder" could break things.

10 years agoRemove some unused #includes
Mikko Rasa [Wed, 15 Oct 2014 18:28:59 +0000 (21:28 +0300)]
Remove some unused #includes

10 years agoAllow specifying fixed arguments for source generators
Mikko Rasa [Wed, 15 Oct 2014 18:28:12 +0000 (21:28 +0300)]
Allow specifying fixed arguments for source generators

Currently, the fixed arguments are placed at the front of the command
line, with the template file coming last.

10 years agoSupport conditionals inside source generator definitions
Mikko Rasa [Wed, 15 Oct 2014 18:27:45 +0000 (21:27 +0300)]
Support conditionals inside source generator definitions

10 years agoMove conditionals into helper classes
Mikko Rasa [Wed, 15 Oct 2014 18:23:22 +0000 (21:23 +0300)]
Move conditionals into helper classes

10 years agoAdd a list of symbols to keep in the binary to BuildInfo
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.

10 years agoBetter algorithm for ordering static libraries
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.

10 years agoProvide the AR tool on Android
Mikko Rasa [Fri, 10 Oct 2014 21:44:37 +0000 (00:44 +0300)]
Provide the AR tool on Android

10 years agoForce shared linking on Android
Mikko Rasa [Fri, 10 Oct 2014 21:43:05 +0000 (00:43 +0300)]
Force shared linking on Android

Android applications are not run as standalone programs, but instead
loaded as native libraries into the Java VM.

10 years agoOnly use files from the first overlay that has them
Mikko Rasa [Fri, 10 Oct 2014 19:08:45 +0000 (22:08 +0300)]
Only use files from the first overlay that has them

This allows special-casing pieces of code for some platforms without
fragmenting the directory structure too badly.

10 years agoMake use of Task's file affinity and unlinking capabilities in Copy
Mikko Rasa [Fri, 10 Oct 2014 16:41:59 +0000 (19:41 +0300)]
Make use of Task's file affinity and unlinking capabilities in Copy

10 years agoA bunch of new tools and targets to build Android packages
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.

10 years agoAdd some logging to AndroidTools
Mikko Rasa [Fri, 10 Oct 2014 11:12:50 +0000 (14:12 +0300)]
Add some logging to AndroidTools

10 years agoOnly get DataTransform directory contents when needed
Mikko Rasa [Fri, 10 Oct 2014 10:25:31 +0000 (13:25 +0300)]
Only get DataTransform directory contents when needed

10 years agoBetter incpath logic in AndroidCxxCompiler
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.

10 years agoIntroduce a helper function in Architecture to pick the best matching name
Mikko Rasa [Fri, 10 Oct 2014 09:59:58 +0000 (12:59 +0300)]
Introduce a helper function in Architecture to pick the best matching name

10 years agoDon't generate filenames with double dash for versionless packages
Mikko Rasa [Thu, 9 Oct 2014 22:18:58 +0000 (01:18 +0300)]
Don't generate filenames with double dash for versionless packages

10 years agoAdd a field for a human-readable name for packages
Mikko Rasa [Thu, 9 Oct 2014 22:14:57 +0000 (01:14 +0300)]
Add a field for a human-readable name for packages

10 years agoNot all devices have libgnustl_shared.so, so better link the static one
Mikko Rasa [Thu, 9 Oct 2014 22:11:51 +0000 (01:11 +0300)]
Not all devices have libgnustl_shared.so, so better link the static one

10 years agoSupport "installing" files to a private staging area
Mikko Rasa [Thu, 9 Oct 2014 22:07:05 +0000 (01:07 +0300)]
Support "installing" files to a private staging area

10 years agoUse C++ include path from sysroot
Mikko Rasa [Thu, 9 Oct 2014 21:02:02 +0000 (00:02 +0300)]
Use C++ include path from sysroot

10 years agoAdd utility class for executing chains of tasks
Mikko Rasa [Thu, 9 Oct 2014 17:46:37 +0000 (20:46 +0300)]
Add utility class for executing chains of tasks

10 years agoSupport redirecting ExternalTask's stdin/stdout from/to a file
Mikko Rasa [Thu, 9 Oct 2014 17:42:57 +0000 (20:42 +0300)]
Support redirecting ExternalTask's stdin/stdout from/to a file

10 years agoA bunch of minor cleanups
Mikko Rasa [Wed, 8 Oct 2014 22:42:04 +0000 (01:42 +0300)]
A bunch of minor cleanups

10 years agoRewrite ExternalTask to use Msp::Process
Mikko Rasa [Wed, 8 Oct 2014 20:08:16 +0000 (23:08 +0300)]
Rewrite ExternalTask to use Msp::Process

10 years agoUse qualified name in base class initializer
Mikko Rasa [Mon, 6 Oct 2014 23:02:48 +0000 (02:02 +0300)]
Use qualified name in base class initializer

10 years agoAlso default to clang on FreeBSD
Mikko Rasa [Mon, 6 Oct 2014 21:55:42 +0000 (00:55 +0300)]
Also default to clang on FreeBSD

10 years agoAdd more recognized architectures
Mikko Rasa [Mon, 6 Oct 2014 21:47:21 +0000 (00:47 +0300)]
Add more recognized architectures

Aliases can now resolve to multiple parts, so words like x86_64 or win32
can do the right thing.

The pc type was changed to x86, because that more accurately describes
the processor archetype.

10 years agoAdd a binary package for zlib
Mikko Rasa [Mon, 6 Oct 2014 21:00:48 +0000 (00:00 +0300)]
Add a binary package for zlib

Not all systems ship it with a .pc file

10 years agoMove the bpk files into a subdirectory and install them
Mikko Rasa [Mon, 6 Oct 2014 20:58:30 +0000 (23:58 +0300)]
Move the bpk files into a subdirectory and install them

10 years agoUse frameworks instead of raw libraries for OpenGL and OpenAL on OS X
Mikko Rasa [Mon, 6 Oct 2014 20:54:15 +0000 (23:54 +0300)]
Use frameworks instead of raw libraries for OpenGL and OpenAL on OS X

10 years agoAdd support for specifying the language standard to use
Mikko Rasa [Mon, 6 Oct 2014 20:49:40 +0000 (23:49 +0300)]
Add support for specifying the language standard to use

10 years agoDrop support for generic tarball components
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.

10 years agoSplit Component into several subclasses
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.

10 years agoDon't use soname for modules
Mikko Rasa [Sun, 5 Oct 2014 23:59:28 +0000 (02:59 +0300)]
Don't use soname for modules

10 years agoDon't rely on component type in determining whether to use -fPIC
Mikko Rasa [Sun, 5 Oct 2014 23:49:06 +0000 (02:49 +0300)]
Don't rely on component type in determining whether to use -fPIC

Instead let SharedLibrary set a flag in ObjectFiles and use that.

10 years agoCollect libpath for static library dependencies from the libs themselves
Mikko Rasa [Sun, 5 Oct 2014 23:41:14 +0000 (02:41 +0300)]
Collect libpath for static library dependencies from the libs themselves

Also fixes Binary::find_dependencies which broke in 3f0f721.

10 years agoAdd options for custom compiler and debug build to bootstrap.sh
Mikko Rasa [Sun, 5 Oct 2014 21:53:02 +0000 (00:53 +0300)]
Add options for custom compiler and debug build to bootstrap.sh

These are not expected to be used normally, but may help in an initial
port to a new platform.

10 years agoRecognize PowerPC architecture
Mikko Rasa [Sun, 5 Oct 2014 11:47:24 +0000 (14:47 +0300)]
Recognize PowerPC architecture

10 years agoOlder versions of OS X don't have clang
Mikko Rasa [Sun, 5 Oct 2014 11:46:54 +0000 (14:46 +0300)]
Older versions of OS X don't have clang

10 years agoAllow overriding tool commands on the command line
Mikko Rasa [Sun, 5 Oct 2014 11:46:28 +0000 (14:46 +0300)]
Allow overriding tool commands on the command line

10 years agoVarious cleanups
Mikko Rasa [Sun, 5 Oct 2014 00:47:08 +0000 (03:47 +0300)]
Various cleanups

10 years agoRudimentary support for compiling things for Android
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.

10 years agoDeal with absolute paths in tool commands
Mikko Rasa [Fri, 3 Oct 2014 22:09:27 +0000 (01:09 +0300)]
Deal with absolute paths in tool commands

10 years agoAdd sysroot support for BuildInfo and compilers
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.

10 years agoAdd paths to beginning when merging BuildInfo
Mikko Rasa [Fri, 3 Oct 2014 21:53:09 +0000 (00:53 +0300)]
Add paths to beginning when merging BuildInfo

This is more consistent with how scalars are handled, since earlier
values take predecence.

10 years agoAdd build info to tools and use it to pass runtime libs
Mikko Rasa [Fri, 3 Oct 2014 21:42:20 +0000 (00:42 +0300)]
Add build info to tools and use it to pass runtime libs

This is more flexible and removes the need for the linker to know about
all compilers.

10 years agoGive targets the ability to gather their own build info
Mikko Rasa [Fri, 3 Oct 2014 21:10:16 +0000 (00:10 +0300)]
Give targets the ability to gather their own build info

10 years agoOnly use the -m flag on native arch
Mikko Rasa [Fri, 3 Oct 2014 20:40:44 +0000 (23:40 +0300)]
Only use the -m flag on native arch

Better yet would be to figure out whether the target arch supports it,
but that's not trivial.

10 years agoRefactor version discovery into the base GnuCompiler class
Mikko Rasa [Thu, 2 Oct 2014 15:24:26 +0000 (18:24 +0300)]
Refactor version discovery into the base GnuCompiler class

10 years agoAlso prepare transitive dependencies
Mikko Rasa [Wed, 1 Oct 2014 22:28:49 +0000 (01:28 +0300)]
Also prepare transitive dependencies

Mostly to make analyzer report correct results when source files are
given on command line.

10 years agoPass a tool hint to VirtualFileSystem::find_header
Mikko Rasa [Wed, 1 Oct 2014 22:27:02 +0000 (01:27 +0300)]
Pass a tool hint to VirtualFileSystem::find_header

This makes C++ includes findable again, since they have no suffix and
thus match no tool.

10 years agoGet the executable in GnuCxxCompiler::do_prepare
Mikko Rasa [Wed, 1 Oct 2014 21:46:42 +0000 (00:46 +0300)]
Get the executable in GnuCxxCompiler::do_prepare

It's needed for querying the compiler version, and Tool won't get it
until after do_prepare.

11 years agoMissed one location with the conditional conversion
Mikko Rasa [Sun, 6 Oct 2013 16:26:26 +0000 (19:26 +0300)]
Missed one location with the conditional conversion

11 years agoSupport boolean logic in conditions
Mikko Rasa [Thu, 3 Oct 2013 13:27:12 +0000 (16:27 +0300)]
Support boolean logic in conditions

Parentheses are missing and a few corner cases trigger obscure errors, but
it's good enough for now.

11 years agoGenerate shorter object file names for generated source files
Mikko Rasa [Thu, 3 Oct 2013 08:09:26 +0000 (11:09 +0300)]
Generate shorter object file names for generated source files

11 years agoMove nested build signature creation to FileTarget
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.

11 years agoAdd and improve build signatures for some tools
Mikko Rasa [Wed, 25 Sep 2013 17:18:52 +0000 (20:18 +0300)]
Add and improve build signatures for some tools

11 years agoProperly support multiple choice features
Mikko Rasa [Wed, 25 Sep 2013 17:06:57 +0000 (20:06 +0300)]
Properly support multiple choice features

11 years agoBase config options directly on features
Mikko Rasa [Wed, 25 Sep 2013 11:54:46 +0000 (14:54 +0300)]
Base config options directly on features

There are no standalone options anymore, so might as well streamline
things a bit.