]>
git.tdb.fi Git - builder.git/log
Mikko Rasa [Wed, 28 Dec 2022 13:47:10 +0000 (15:47 +0200)]
Move the VS project and solution generators to the MSVC plugin
Mikko Rasa [Wed, 28 Dec 2022 13:43:18 +0000 (15:43 +0200)]
Rename builtintools to basetools
It doesn't make much sense to call it "builtin" if it's actually a
plugin.
Mikko Rasa [Wed, 28 Dec 2022 13:39:12 +0000 (15:39 +0200)]
Convert builtin tools into a plugin
Mikko Rasa [Wed, 28 Dec 2022 13:38:27 +0000 (15:38 +0200)]
Allow plugins to create additional targets in SourcePackages
Mikko Rasa [Wed, 28 Dec 2022 13:17:14 +0000 (15:17 +0200)]
Convert the simpler toolchains into plugins
These have no references to them from the main library and were the
easiest to convert.
Mikko Rasa [Wed, 28 Dec 2022 13:16:21 +0000 (15:16 +0200)]
Add an interface for dynamically loaded plugins
Mikko Rasa [Wed, 28 Dec 2022 12:47:49 +0000 (14:47 +0200)]
Avoid some failures from MicrosoftTools when running on Linux
Don't try to run vswhere.exe if it isn't found. If running on WSL, map
its result to the mount location to the Windows drive.
Mikko Rasa [Wed, 28 Dec 2022 12:19:19 +0000 (14:19 +0200)]
Refactor VsSolutionFile::find_dependencies as recursive
This avoids an issue with inserting elements into a vector while
iterating over it.
Mikko Rasa [Wed, 28 Dec 2022 11:43:23 +0000 (13:43 +0200)]
Disallow two components with the same name
Mikko Rasa [Wed, 28 Dec 2022 11:42:34 +0000 (13:42 +0200)]
Collapse the component loading functions in SourcePackage::Loader
Mikko Rasa [Wed, 28 Dec 2022 11:40:35 +0000 (13:40 +0200)]
Rename the library component as libbuilder
Using the same name for the program and the library components causes
some trouble especially with MSVC, since the pdb and ilk files overlap.
Mikko Rasa [Wed, 28 Dec 2022 11:23:46 +0000 (13:23 +0200)]
Remove a lib prefix from the libname of built SharedLibraries
It may be useful to have the prefix in a library component name to
differentiate it from a program component.
Mikko Rasa [Tue, 27 Dec 2022 20:52:34 +0000 (22:52 +0200)]
Rearrange sources into subdirectories
Mikko Rasa [Tue, 27 Dec 2022 20:41:22 +0000 (22:41 +0200)]
Add gcc's private library directory to ClangLinker's system path
It's needed for libstdc++.
Mikko Rasa [Tue, 27 Dec 2022 19:52:10 +0000 (21:52 +0200)]
Refactor the use of external tasks in tools
The run functions now just return the arguments, and a wrapper in the
Tool class creates the task object.
Mikko Rasa [Tue, 27 Dec 2022 16:12:49 +0000 (18:12 +0200)]
Initialize AndroidCompiler's build info in do_prepare
Mikko Rasa [Tue, 27 Dec 2022 16:11:11 +0000 (18:11 +0200)]
Add a customized linker tool to ClangTools
Also remove the GnuArchiver from it, beacuse the GNU and clang toolchains
can now be active at the same time.
Mikko Rasa [Tue, 27 Dec 2022 16:08:20 +0000 (18:08 +0200)]
Use GnuCompiler's build info to link libstdc++
Mikko Rasa [Tue, 27 Dec 2022 15:58:08 +0000 (17:58 +0200)]
Gather more system path information for GnuLinker
Mikko Rasa [Tue, 27 Dec 2022 01:23:31 +0000 (03:23 +0200)]
Improve prefix management
An automatically set prefix is now updated when the default toolchain
is selected. Setting the architecture won't override prefix if it was
already explicitly set.
Mikko Rasa [Tue, 27 Dec 2022 01:15:51 +0000 (03:15 +0200)]
Prepare early dependencies of a target before finding more
AndroidCompiler supplies build information for the C++ standard library,
which is consumed by Binary through ObjectFiles. The compiler needs to
be prepared before Binary is, or the C++ stdlib won't be found.
Mikko Rasa [Mon, 26 Dec 2022 20:40:20 +0000 (22:40 +0200)]
Further tweak GnuCompiler::query_version
Some compilers return non-numeric version components, like 4.9.x. This
change keeps values of all the initial numeric components.
Mikko Rasa [Mon, 26 Dec 2022 18:36:19 +0000 (20:36 +0200)]
Fix initialization of Android tools' commands
Mikko Rasa [Mon, 26 Dec 2022 19:01:30 +0000 (21:01 +0200)]
Add a sanity check for derived tool commands
It doesn't seem correct to copy the command in CustomizedTool, since
often the derived class will want to use a different command anyway.
Mikko Rasa [Mon, 26 Dec 2022 18:35:20 +0000 (20:35 +0200)]
Make sure the extra_data of GnuCompiler is initialized
Mikko Rasa [Mon, 26 Dec 2022 13:41:53 +0000 (15:41 +0200)]
Initialize AndroidDevKit::supported_api_levels in the declaration
Mikko Rasa [Mon, 26 Dec 2022 13:30:56 +0000 (15:30 +0200)]
Avoid zeroing version of -dumpfullversion doesn't return anything
Clang doesn't seem to recognize it. This is a bit of a hack and it
would be better if ClangCompiler could handle the version check somehow,
but it's not obvious how to do that.
Mikko Rasa [Mon, 26 Dec 2022 12:55:38 +0000 (14:55 +0200)]
Don't load a cross prefix for a native architecture
Mikko Rasa [Mon, 26 Dec 2022 12:51:02 +0000 (14:51 +0200)]
Use a cross prefix for the new unified GnuLinker driver
Mikko Rasa [Mon, 26 Dec 2022 12:45:50 +0000 (14:45 +0200)]
Avoid a memory leak if Builder::set_architecture is called again
Mikko Rasa [Mon, 26 Dec 2022 12:20:51 +0000 (14:20 +0200)]
Use CustomizedTool for tools which derive from other tools
Mikko Rasa [Mon, 26 Dec 2022 12:07:51 +0000 (14:07 +0200)]
Fix logic issues with Tool::prepare
CustomizedTool's do_prepare will call the parent tool's prepare with
itself as argument, so the prepared flag shouldn't be checked in this
case.
The command and executable checks are also better to do in the outer
call to avoid doing them twice, since they don't depend on the base
tool's logic.
Mikko Rasa [Mon, 26 Dec 2022 11:28:21 +0000 (13:28 +0200)]
Use priorities to determine the default toolchain
Mikko Rasa [Mon, 26 Dec 2022 11:01:27 +0000 (13:01 +0200)]
Reject architecture specification conflicts for all fields
This gives errors for nonsensical stuff like linux-windows-32-64-gnu-msvc,
which was previously accepted.
Mikko Rasa [Mon, 26 Dec 2022 11:01:10 +0000 (13:01 +0200)]
Allow architecture specifications to be refined after creation
Mikko Rasa [Mon, 26 Dec 2022 10:35:26 +0000 (12:35 +0200)]
Fix a shadowed variable warning
Mikko Rasa [Sat, 24 Dec 2022 21:34:14 +0000 (23:34 +0200)]
Add a helper class for tool customization
Mikko Rasa [Sat, 24 Dec 2022 21:25:29 +0000 (23:25 +0200)]
Rework Tool::prepare to be able to work on other objects than self
This is another piece required for inheritance-less tool customization.
Mikko Rasa [Sat, 24 Dec 2022 21:21:37 +0000 (23:21 +0200)]
Refactor GnuCompiler::prepare_version a bit
Mikko Rasa [Sat, 24 Dec 2022 16:26:52 +0000 (18:26 +0200)]
Change Tool's protected constructor to take a pointer to Architecture
Mikko Rasa [Sat, 24 Dec 2022 13:11:41 +0000 (15:11 +0200)]
Remove the now obsolete SubTool class
Mikko Rasa [Sat, 24 Dec 2022 12:30:54 +0000 (14:30 +0200)]
Redesign GnuLinker to work without subtools
Mikko Rasa [Sat, 24 Dec 2022 12:12:53 +0000 (14:12 +0200)]
Don't complain about missing executable if a tool has no command
This is the case for internal tools.
Mikko Rasa [Sat, 24 Dec 2022 12:12:18 +0000 (14:12 +0200)]
Fix bit shifts to be 64-bit
Mikko Rasa [Sat, 24 Dec 2022 12:11:01 +0000 (14:11 +0200)]
Capture value evaluation function by value
Otherwise it will go out of scope if a temporary is passed.
Mikko Rasa [Fri, 23 Dec 2022 21:25:04 +0000 (23:25 +0200)]
File Tool's executable before calling do_prepare
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.