]>
git.tdb.fi Git - builder.git/log
Mikko Rasa [Thu, 22 Dec 2022 16:05:25 +0000 (18:05 +0200)]
Redesign how tools are run
It also uses functors now. The run functions access properties of the
tool through the target. This will allow tool customization without
having to derive from the class, which will be useful for modularization.
Mikko Rasa [Thu, 22 Dec 2022 14:22:46 +0000 (16:22 +0200)]
Clear the line before printing task info if progress is enabled
Mikko Rasa [Thu, 22 Dec 2022 14:22:22 +0000 (16:22 +0200)]
Remove redundant task setup from Copy
FileTarget already does this
Mikko Rasa [Thu, 22 Dec 2022 14:01:43 +0000 (16:01 +0200)]
Refactor InternalTask to take a functor
This way the tools don't all have to implement the same worker thread
boilerplate.
Mikko Rasa [Thu, 22 Dec 2022 12:56:28 +0000 (14:56 +0200)]
Inline simple constructors
Mikko Rasa [Thu, 22 Dec 2022 12:45:50 +0000 (14:45 +0200)]
Use default member initializers and constructor delegation
Mikko Rasa [Wed, 21 Dec 2022 10:55:03 +0000 (12:55 +0200)]
Bump version to 3.0 and update copyright years
I've done some modernization of the code and am about to make the program
modular, so a version bump is warranted.
Mikko Rasa [Wed, 21 Dec 2022 10:26:15 +0000 (12:26 +0200)]
Refactor logger to do message formatting internally
This shortens the syntax of using it and may also provide a minor
performance improvement since formatting doesn't need to be done for
disabled channels.
Mikko Rasa [Wed, 21 Dec 2022 09:52:11 +0000 (11:52 +0200)]
Track Android API levels with a bitmask
Mikko Rasa [Wed, 21 Dec 2022 09:48:44 +0000 (11:48 +0200)]
Replace some sets with vectors as well
In these cases the number of expected elements is small and/or the set
is built up once and then used many times.
Mikko Rasa [Wed, 21 Dec 2022 09:23:37 +0000 (11:23 +0200)]
Convert all list containers to vectors
Mikko Rasa [Tue, 20 Dec 2022 22:38:59 +0000 (00:38 +0200)]
Rewrite dependency finding algorithms in a few classes
They no longer depend on iterators to the dependencies list staying valid
when elements are added, allowing conversion to std::vector.
Mikko Rasa [Tue, 20 Dec 2022 12:08:14 +0000 (14:08 +0200)]
Make data members of Task protected
I'm not sure why they were public, maybe by accident.
Mikko Rasa [Tue, 20 Dec 2022 12:04:01 +0000 (14:04 +0200)]
Check for empty sources in Tar::create_target
Mikko Rasa [Tue, 20 Dec 2022 12:03:45 +0000 (14:03 +0200)]
Use dynamic_cast to reference when incorrect type is not acceptable
Mikko Rasa [Tue, 20 Dec 2022 12:00:14 +0000 (14:00 +0200)]
Adjust build signatures to contain the tool tag
External tools now have a build signature by default.
Mikko Rasa [Mon, 19 Dec 2022 19:24:40 +0000 (21:24 +0200)]
Guard against build type being missing
Mikko Rasa [Mon, 19 Dec 2022 19:14:28 +0000 (21:14 +0200)]
Log environment information before preparing the build
Mikko Rasa [Mon, 19 Dec 2022 19:12:29 +0000 (21:12 +0200)]
Improve architecture name matching
It will now treat x86_64 as a more specific match than just x86.
Mikko Rasa [Mon, 19 Dec 2022 19:11:40 +0000 (21:11 +0200)]
Use format() when creating strings from more than two parts
Mikko Rasa [Mon, 19 Dec 2022 19:00:51 +0000 (21:00 +0200)]
Refactor BooleanEvaluator to have overloaded constructors
The signature of the function passed in is now used to determine if
comparison operators are permitted.
Mikko Rasa [Mon, 19 Dec 2022 18:54:29 +0000 (20:54 +0200)]
Use std::function instead of sigc::slot in BooleanEvaluator
Mikko Rasa [Mon, 19 Dec 2022 18:15:27 +0000 (20:15 +0200)]
Fix typos
Mikko Rasa [Mon, 19 Dec 2022 18:14:52 +0000 (20:14 +0200)]
Cache result of parsing $PATH
Mikko Rasa [Mon, 19 Dec 2022 18:08:13 +0000 (20:08 +0200)]
Refuse to create an empty data pack
This avoids a segfault from trying to access te front element of an
empty list.
Mikko Rasa [Mon, 19 Dec 2022 18:04:40 +0000 (20:04 +0200)]
Use DataFile::Writer to write package configuration files
Mikko Rasa [Mon, 19 Dec 2022 18:01:03 +0000 (20:01 +0200)]
Combine the processing of configuration and tool overrides
Mikko Rasa [Mon, 19 Dec 2022 17:18:11 +0000 (19:18 +0200)]
Remove most container typedefs and refactor others
Mikko Rasa [Mon, 19 Dec 2022 14:52:50 +0000 (16:52 +0200)]
Use braced initializer lists for map insertions
Mikko Rasa [Mon, 19 Dec 2022 14:19:21 +0000 (16:19 +0200)]
Use bound loader function arguments for binary component types
Mikko Rasa [Mon, 19 Dec 2022 14:18:18 +0000 (16:18 +0200)]
Refactor the constructor of SourcePackage::Loader
There isn't much point to have two differnt overloads when it could just
take a nullable pointer.
Mikko Rasa [Mon, 19 Dec 2022 14:02:38 +0000 (16:02 +0200)]
Use auto type for iterator variables
Mikko Rasa [Mon, 19 Dec 2022 13:39:27 +0000 (15:39 +0200)]
Mark overridden virtual functions as such
Mikko Rasa [Mon, 19 Dec 2022 12:52:33 +0000 (14:52 +0200)]
Use shortcut functions for find calls
Mikko Rasa [Mon, 19 Dec 2022 12:32:43 +0000 (14:32 +0200)]
Replace basic for loops with range-based loops or algorithms
In remaining cases use auto as a shortcut for the iterator type.
Mikko Rasa [Mon, 19 Dec 2022 10:11:32 +0000 (12:11 +0200)]
Begin converting the code to C++11
Mikko Rasa [Sun, 18 Dec 2022 18:16:38 +0000 (20:16 +0200)]
Improve help output for the local package
Only output the required packages list if anything is required, and
output an overall header before the package-specific section.
Mikko Rasa [Sun, 18 Dec 2022 18:02:17 +0000 (20:02 +0200)]
Emit configurations in Visual Studio solutions
Projects other than the main one are marked as not being built, since
builder will build them implicitly as part of the main project.
This also seems to be enough for Visual Studio to not complain about the
solution being modified when closing it.
Mikko Rasa [Sun, 18 Dec 2022 16:03:41 +0000 (18:03 +0200)]
Add ability to generate Visual Studio solution files
Currently very minimal, and VS treats the solution as modified
immediately after loading it.
Mikko Rasa [Sun, 18 Dec 2022 15:58:59 +0000 (17:58 +0200)]
Generate GUIDs for Visual C++ project files
Mikko Rasa [Sun, 18 Dec 2022 14:47:30 +0000 (16:47 +0200)]
Emit include path in vcxproj files
Mikko Rasa [Sun, 18 Dec 2022 14:26:46 +0000 (16:26 +0200)]
Don't output a PlatformToolset tag in vcxproj files
Visual Studio doesn't seem to actually need it. It's fairly meaningless
anyway since builder will choose the toolset itself.
Mikko Rasa [Sun, 18 Dec 2022 11:09:26 +0000 (13:09 +0200)]
Zlib has a different filename in MSVC builds
Mikko Rasa [Sun, 18 Dec 2022 11:03:50 +0000 (13:03 +0200)]
Detect the latest MSVC tools version
Mikko Rasa [Sat, 17 Dec 2022 00:16:54 +0000 (02:16 +0200)]
Add the corresponding generated source directory to local include path
This allows generated headers to be used as normal.
Mikko Rasa [Sat, 17 Dec 2022 00:15:36 +0000 (02:15 +0200)]
Create a directory structure for generated source files
Mikko Rasa [Sat, 10 Dec 2022 23:18:26 +0000 (01:18 +0200)]
Add support for SSE3 and SSE4.1 FPUs
Mikko Rasa [Sat, 10 Dec 2022 23:17:13 +0000 (01:17 +0200)]
When combining build info, keep the highest standard versions
Mikko Rasa [Sat, 10 Dec 2022 23:16:49 +0000 (01:16 +0200)]
More sophisticated handling of language standards
Mikko Rasa [Sat, 10 Dec 2022 22:35:43 +0000 (00:35 +0200)]
Add language standards to exported build info of source packages
Mikko Rasa [Wed, 10 Nov 2021 18:06:23 +0000 (20:06 +0200)]
Save caches before starting the build
This causes the config cache file's timestamp to be earlier than any
built file, preventing a spurious second rebuild after changing options.
Mikko Rasa [Sun, 31 Oct 2021 16:24:36 +0000 (18:24 +0200)]
Reorder functions to match the header
Mikko Rasa [Sun, 31 Oct 2021 15:50:32 +0000 (17:50 +0200)]
Add logging for some problem situations
Mikko Rasa [Sun, 31 Oct 2021 15:44:48 +0000 (17:44 +0200)]
Add support for generating compile_commands.json
This file is used by some clang tools to find compile options.
Mikko Rasa [Sun, 31 Oct 2021 08:23:34 +0000 (10:23 +0200)]
Use -fno-omit-frame-pointer if debug is set with optimizations
Mikko Rasa [Wed, 1 Sep 2021 00:41:35 +0000 (03:41 +0300)]
Add MSVC-specific library name for sigc++
This is hardcoded for the debug version now, until I come up with a way
to make it conditional on build type.
Mikko Rasa [Wed, 1 Sep 2021 00:18:24 +0000 (03:18 +0300)]
Additional MSVC fixes
Mikko Rasa [Wed, 1 Sep 2021 00:17:51 +0000 (03:17 +0300)]
Use getenv from mspcore
Mikko Rasa [Tue, 31 Aug 2021 23:41:52 +0000 (02:41 +0300)]
Add drivers for the MSVC toolchain
Shared libraries are not yet properly supported. Import libraries are
not generated and all of my code lacks the necessary attributes anyway.
Mikko Rasa [Tue, 31 Aug 2021 18:14:53 +0000 (21:14 +0300)]
Use a separate category for import library filename patterns
Mikko Rasa [Tue, 31 Aug 2021 18:13:23 +0000 (21:13 +0300)]
More flexible way to manage filename patterns
Mikko Rasa [Tue, 31 Aug 2021 11:55:59 +0000 (14:55 +0300)]
Include the toolchain name in project file build commands
Mikko Rasa [Tue, 31 Aug 2021 11:50:04 +0000 (14:50 +0300)]
Convert architecture argument to lower case
Mikko Rasa [Mon, 30 Aug 2021 00:30:34 +0000 (03:30 +0300)]
Tweak VC project files to better match what the software expects
Mikko Rasa [Mon, 30 Aug 2021 00:29:25 +0000 (03:29 +0300)]
Add the VC project file generator to BuiltinTools
Mikko Rasa [Sun, 29 Aug 2021 20:37:17 +0000 (23:37 +0300)]
Adapt to changes in mspcore
Mikko Rasa [Sat, 28 Aug 2021 13:01:52 +0000 (16:01 +0300)]
Detect CPU architecture on Windows
Mikko Rasa [Sat, 28 Aug 2021 13:00:12 +0000 (16:00 +0300)]
Move system-specific code to a separate file
Mikko Rasa [Sat, 28 Aug 2021 11:46:01 +0000 (14:46 +0300)]
Make object file names configurable through Architecture
Mikko Rasa [Sat, 28 Aug 2021 11:41:07 +0000 (14:41 +0300)]
Add a toolchain field to Architecture
Mikko Rasa [Sat, 28 Aug 2021 11:16:44 +0000 (14:16 +0300)]
Split SystemTools into GnuTools and ClangTools
Mikko Rasa [Sun, 22 Aug 2021 11:33:13 +0000 (14:33 +0300)]
Add support for generating Visual C++ projects
Mikko Rasa [Sun, 22 Aug 2021 11:28:01 +0000 (14:28 +0300)]
Basic support for running builder on Windows
Mikko Rasa [Sun, 21 Feb 2021 20:00:48 +0000 (22:00 +0200)]
Account for install directories when forming displaced dependency paths
Mikko Rasa [Sun, 9 Feb 2020 20:30:54 +0000 (22:30 +0200)]
Add support for the orientation tag in Android manifest
Mikko Rasa [Tue, 17 Sep 2019 16:13:39 +0000 (19:13 +0300)]
Fix Windows platform checks
Mikko Rasa [Tue, 17 Sep 2019 16:13:04 +0000 (19:13 +0300)]
Add copy-constructor as required by C++11
Mikko Rasa [Wed, 21 Aug 2019 22:04:12 +0000 (01:04 +0300)]
Don't block in ExternalTask::do_wait unless requested
Mikko Rasa [Fri, 21 Jun 2019 17:59:15 +0000 (20:59 +0300)]
Read output from external task while waiting
Waiting for the process to finish first may lead to a deadlock if it
produces more output than can fit in the pipe's buffers.
Mikko Rasa [Wed, 12 Jun 2019 17:08:03 +0000 (20:08 +0300)]
Add a statement to specify multiple arguments at once for a generator
Mikko Rasa [Wed, 12 Jun 2019 16:41:12 +0000 (19:41 +0300)]
Support generators that require a switch before output file name
Mikko Rasa [Wed, 12 Jun 2019 16:40:01 +0000 (19:40 +0300)]
Allow generator commands to reside outside of the package
In particular, this lets system binaries to be used as generators.
Mikko Rasa [Thu, 6 Jun 2019 13:08:38 +0000 (16:08 +0300)]
Provide a binary package for libmad
It does not provide a .pc file of its own.
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 [Mon, 3 Jun 2019 12:00:07 +0000 (15:00 +0300)]
Use a different cross-compile prefix for 64-bit Windows
The i686 version of MinGW won't compile 64-bit binaries even with -m64.
Mikko Rasa [Mon, 3 Jun 2019 11:59:04 +0000 (14:59 +0300)]
Fix check for appending pattern suffix
If the body is too short to already contain the suffix, it should be
added.
Mikko Rasa [Mon, 3 Jun 2019 11:58:50 +0000 (14:58 +0300)]
Update deprecated things
Mikko Rasa [Wed, 26 Dec 2018 22:41:03 +0000 (00:41 +0200)]
Remove the -lmingw32 hack
Libmspcore now implements main() on Windows so it isn't needed anymore.
Mikko Rasa [Tue, 25 Dec 2018 11:06:30 +0000 (13:06 +0200)]
Don't apply parts of a pattern that are already present
This allows naming a library component "libsomething" without the final
file name having a double lib prefix.
Mikko Rasa [Thu, 30 Aug 2018 11:13:00 +0000 (14:13 +0300)]
Slight updates to Readme
Mikko Rasa [Thu, 30 Aug 2018 11:06:03 +0000 (14:06 +0300)]
Add support for statically linking the C++ standard library
It can be requested by setting the libmode for "stdc++" as STATIC.
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 [Thu, 30 Aug 2018 10:41:06 +0000 (13:41 +0300)]
Use const references in BuildInfo::Tracked operators
Mikko Rasa [Thu, 30 Aug 2018 10:07:40 +0000 (13:07 +0300)]
Silence the cast-function-type warning on GCC 8
It causes problems when function type need to be explicitly converted,
like in sigc++.
Mikko Rasa [Thu, 30 Aug 2018 10:05:24 +0000 (13:05 +0300)]
Move version discovery back to GnuCompiler
It's needed to determine whether some options are supported
Mikko Rasa [Sun, 8 Jul 2018 15:25:19 +0000 (18:25 +0300)]
Also store library path in static libraries
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 [Mon, 25 Jun 2018 21:15:36 +0000 (00:15 +0300)]
Don't crash if the executable of a GnuCompiler is not found
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.
Mikko Rasa [Mon, 4 Dec 2017 08:06:41 +0000 (10:06 +0200)]
Recognize and use the common sysroot in newer Android NDKs