]> git.tdb.fi Git - builder.git/log
builder.git
7 months agoAdd null pointer check in CustomizedTool::create_target master
Mikko Rasa [Sun, 26 Jan 2025 10:38:05 +0000 (12:38 +0200)]
Add null pointer check in CustomizedTool::create_target

15 months agoInclude the main package when showing help for all packages
Mikko Rasa [Sun, 5 May 2024 11:52:49 +0000 (14:52 +0300)]
Include the main package when showing help for all packages

16 months agoAdd a binary package for Vulkan
Mikko Rasa [Sat, 4 May 2024 16:49:07 +0000 (19:49 +0300)]
Add a binary package for Vulkan

16 months agoSupport environment variables as hints for binary package locations
Mikko Rasa [Sat, 4 May 2024 16:48:27 +0000 (19:48 +0300)]
Support environment variables as hints for binary package locations

16 months agoSet PATH in Visual Studio projects
Mikko Rasa [Sat, 4 May 2024 11:26:06 +0000 (14:26 +0300)]
Set PATH in Visual Studio projects

This allows the built program to be run without copying DLLs to the
project directory.

16 months agoRefactor file locating code in BinaryPackage into a separate function
Mikko Rasa [Sat, 4 May 2024 08:09:15 +0000 (11:09 +0300)]
Refactor file locating code in BinaryPackage into a separate function

18 months agoReinstate the use of sonames for shared libraries
Mikko Rasa [Wed, 7 Feb 2024 19:50:01 +0000 (21:50 +0200)]
Reinstate the use of sonames for shared libraries

The field was accidentally left empty in 1600cda.  Having an soname is
actually important on Linux and possibly other *nix systems.

19 months agoMake import libraries transitively depend on the shared library
Mikko Rasa [Fri, 5 Jan 2024 14:55:12 +0000 (16:55 +0200)]
Make import libraries transitively depend on the shared library

This ensures the shared libraries are installed when a program is built.

19 months agoProcess transitive dependencies for buildable dependencies too
Mikko Rasa [Fri, 5 Jan 2024 14:24:47 +0000 (16:24 +0200)]
Process transitive dependencies for buildable dependencies too

They may get resolved to an installed location.

20 months agoUpdate C++ version in the bootstrap script
Mikko Rasa [Sat, 23 Dec 2023 11:58:55 +0000 (13:58 +0200)]
Update C++ version in the bootstrap script

22 months agoShow configuration of all packages with --help --conf-all
Mikko Rasa [Thu, 5 Oct 2023 09:39:33 +0000 (12:39 +0300)]
Show configuration of all packages with --help --conf-all

Also other tweaks to help output.

23 months agoPass the package path to the stage1 binary
Mikko Rasa [Thu, 21 Sep 2023 15:38:30 +0000 (18:38 +0300)]
Pass the package path to the stage1 binary

23 months agoReport problems during bootstrap build
Mikko Rasa [Thu, 21 Sep 2023 15:38:03 +0000 (18:38 +0300)]
Report problems during bootstrap build

23 months agoChange how library modes are retrieved for binaries again
Mikko Rasa [Sat, 16 Sep 2023 11:18:08 +0000 (14:18 +0300)]
Change how library modes are retrieved for binaries again

The change in 6280e72 turned out to be incorrect after all, and I can't
remember of find any bug that it fixed.

23 months agoSupport manually written export definition files on Windows
Mikko Rasa [Fri, 15 Sep 2023 19:51:43 +0000 (22:51 +0300)]
Support manually written export definition files on Windows

They are required to compile some third-party libraries with Builder.

23 months agoAdd helper functions to process sources in a uniform way
Mikko Rasa [Fri, 15 Sep 2023 18:54:54 +0000 (21:54 +0300)]
Add helper functions to process sources in a uniform way

23 months agoAlways accept an exact match for a source package directory name
Mikko Rasa [Sat, 9 Sep 2023 17:42:32 +0000 (20:42 +0300)]
Always accept an exact match for a source package directory name

This allows packages to be found even if the dependency name contains a
version in it.

23 months agoDisable warning C4250 on MSVC
Mikko Rasa [Tue, 5 Sep 2023 09:14:08 +0000 (12:14 +0300)]
Disable warning C4250 on MSVC

It's emitted when a class inherits a virtual base through multiple ways,
and one of those ways overrides a virtual function from the base.  This
feels more annoying than useful; I'll deal with any ambiguities as they
arise.

2 years agoAllow spaces after # when reading includes from C source files
Mikko Rasa [Mon, 4 Sep 2023 22:01:31 +0000 (01:01 +0300)]
Allow spaces after # when reading includes from C source files

2 years agoEnable correct __cplusplus macro on MSVC
Mikko Rasa [Sun, 3 Sep 2023 23:18:31 +0000 (02:18 +0300)]
Enable correct __cplusplus macro on MSVC

2 years agoUse architecture-dependent filename pattern when looking for binaries
Mikko Rasa [Sun, 3 Sep 2023 23:17:19 +0000 (02:17 +0300)]
Use architecture-dependent filename pattern when looking for binaries

2 years agoFix processing of PATH on Windows
Mikko Rasa [Sun, 3 Sep 2023 23:16:56 +0000 (02:16 +0300)]
Fix processing of PATH on Windows

Also always add the bin directory of the install prefix.

2 years agoDisable -Wdanging-reference on warning levels 2 and 3
Mikko Rasa [Thu, 10 Aug 2023 23:06:36 +0000 (02:06 +0300)]
Disable -Wdanging-reference on warning levels 2 and 3

2 years agoDon't try to look for Build files in non-directories
Mikko Rasa [Sat, 6 May 2023 14:32:40 +0000 (17:32 +0300)]
Don't try to look for Build files in non-directories

My stat implementation on Windows apparently treats this situation as
"file not found", so I did not notice it until now.

2 years agoOnly displace dependencies from the same component
Mikko Rasa [Fri, 5 May 2023 21:38:16 +0000 (00:38 +0300)]
Only displace dependencies from the same component

Now that files can be installed into a private staging directory, there's
little reason to include headers from a different component directly.

2 years agoInclude package path in Visual Studio projects
Mikko Rasa [Thu, 4 May 2023 08:35:49 +0000 (11:35 +0300)]
Include package path in Visual Studio projects

2 years agoAvoid duplicate entries in package paths
Mikko Rasa [Thu, 4 May 2023 08:35:33 +0000 (11:35 +0300)]
Avoid duplicate entries in package paths

2 years agoRefactor gathering of package dependencies
Mikko Rasa [Thu, 4 May 2023 08:35:15 +0000 (11:35 +0300)]
Refactor gathering of package dependencies

2 years agoWhile looking for source packages, ignore Build files which are not files
Mikko Rasa [Mon, 24 Apr 2023 04:12:24 +0000 (21:12 -0700)]
While looking for source packages, ignore Build files which are not files

Non-builder packages might contain directories by that name.

2 years agoAdd a command line option to specify package search directories
Mikko Rasa [Mon, 24 Apr 2023 04:12:04 +0000 (21:12 -0700)]
Add a command line option to specify package search directories

2 years agoAdd an option to disable installing headers of a binary component
Mikko Rasa [Mon, 24 Apr 2023 02:26:58 +0000 (19:26 -0700)]
Add an option to disable installing headers of a binary component

This can be used with a separate install component to control which
headers are installed.

2 years agoRefactor transitive dependencies to work on all targets
Mikko Rasa [Sun, 12 Mar 2023 13:23:06 +0000 (15:23 +0200)]
Refactor transitive dependencies to work on all targets

2 years agoUse a covariant return type for get_real_target in FileTarget
Mikko Rasa [Sun, 12 Mar 2023 13:18:10 +0000 (15:18 +0200)]
Use a covariant return type for get_real_target in FileTarget

2 years agoRemove the include path for used local components
Mikko Rasa [Sun, 12 Mar 2023 13:06:10 +0000 (15:06 +0200)]
Remove the include path for used local components

Their headers are now installed in the staging directory, which provides
a more robust way of including them.

2 years agoSome minor touch-up to the bootstrap script
Mikko Rasa [Sun, 12 Mar 2023 11:30:27 +0000 (13:30 +0200)]
Some minor touch-up to the bootstrap script

2 years agoUpdate the bootstrap to work with recent changes
Mikko Rasa [Sun, 12 Mar 2023 11:25:46 +0000 (13:25 +0200)]
Update the bootstrap to work with recent changes

There's now a separate, simplified frontend for the stage1 binary.

2 years agoMake it possible to use built-in plugins
Mikko Rasa [Sun, 12 Mar 2023 11:20:27 +0000 (13:20 +0200)]
Make it possible to use built-in plugins

2 years agoInstall headers of non-installed components in a staging directory
Mikko Rasa [Tue, 7 Mar 2023 23:57:30 +0000 (01:57 +0200)]
Install headers of non-installed components in a staging directory

This allows components to include headers from other local components in
a controlled fashion.

2 years agoRearrange generated source paths
Mikko Rasa [Tue, 7 Mar 2023 23:53:36 +0000 (01:53 +0200)]
Rearrange generated source paths

2 years agoRemove the implicit include path for the generated source directory
Mikko Rasa [Tue, 7 Mar 2023 23:36:26 +0000 (01:36 +0200)]
Remove the implicit include path for the generated source directory

It doesn't work properly when a source file includes a header from a
different component in the local package and that header tries to include
a generated header in its own component.  Adding the generated source
directories of all used compnents isn't good either, in case multiple
components have generated headers with the same name.

2 years agoMove some path and filename manipulations into the Component class
Mikko Rasa [Tue, 7 Mar 2023 23:30:22 +0000 (01:30 +0200)]
Move some path and filename manipulations into the Component class

2 years agoDon't busyloop while waiting for an internal task to complete
Mikko Rasa [Mon, 9 Jan 2023 09:18:07 +0000 (11:18 +0200)]
Don't busyloop while waiting for an internal task to complete

2 years agoReport timings of the build
Mikko Rasa [Mon, 9 Jan 2023 09:17:17 +0000 (11:17 +0200)]
Report timings of the build

2 years agoAssociate targets with FileTargets instead of paths
Mikko Rasa [Mon, 9 Jan 2023 09:15:10 +0000 (11:15 +0200)]
Associate targets with FileTargets instead of paths

2 years agoRename some variables to avoid conflicts with C++20 keywords
Mikko Rasa [Sat, 7 Jan 2023 13:12:53 +0000 (15:12 +0200)]
Rename some variables to avoid conflicts with C++20 keywords

2 years agoAllow source packages to specify exported build info
Mikko Rasa [Thu, 5 Jan 2023 23:00:48 +0000 (01:00 +0200)]
Allow source packages to specify exported build info

2 years agoReport which targets participate in a dependency cycle
Mikko Rasa [Thu, 5 Jan 2023 09:56:38 +0000 (11:56 +0200)]
Report which targets participate in a dependency cycle

2 years agoAvoid spurious dependency loop errors from side effects
Mikko Rasa [Thu, 5 Jan 2023 09:36:41 +0000 (11:36 +0200)]
Avoid spurious dependency loop errors from side effects

If the primary target depends on its own side effect (such as a generated
source file including a header generated by the same command), this could
cause the side effect's prepare() to be entered recursively.

2 years agoMake sure the name of the build macro is valid
Mikko Rasa [Thu, 5 Jan 2023 07:53:18 +0000 (09:53 +0200)]
Make sure the name of the build macro is valid

Component names are arbitrary strings, so non-alphanumeric characters
must be dealt with.

2 years agoUpdate .gitignore to include build products on Windows
Mikko Rasa [Wed, 4 Jan 2023 10:58:22 +0000 (12:58 +0200)]
Update .gitignore to include build products on Windows

2 years agoRemove an unnecessary initializer from a constructor
Mikko Rasa [Wed, 4 Jan 2023 10:55:54 +0000 (12:55 +0200)]
Remove an unnecessary initializer from a constructor

2 years agoMake PackageManager::run_pkgconfig fail on Windows
Mikko Rasa [Wed, 4 Jan 2023 10:38:30 +0000 (12:38 +0200)]
Make PackageManager::run_pkgconfig fail on Windows

... instead of returning an empty string which would be interpreted as a
successful result and used to create bogus binary packages.

2 years agoAvoid exception if plugins directory is not found
Mikko Rasa [Tue, 3 Jan 2023 17:32:29 +0000 (19:32 +0200)]
Avoid exception if plugins directory is not found

2 years agoDisable generation of .exp files on MSVC
Mikko Rasa [Tue, 3 Jan 2023 17:14:56 +0000 (19:14 +0200)]
Disable generation of .exp files on MSVC

They don't seem useful outside of circular import situations, which I
don't have.

2 years agoMove FileTarget's constructors to the .cpp file
Mikko Rasa [Tue, 3 Jan 2023 17:09:48 +0000 (19:09 +0200)]
Move FileTarget's constructors to the .cpp file

This avoids an undefined reference error on MSVC.

2 years agoMark side effects for rebuilding together with their primary targets
Mikko Rasa [Tue, 3 Jan 2023 17:06:45 +0000 (19:06 +0200)]
Mark side effects for rebuilding together with their primary targets

2 years agoExplicitly create import libraries from BinaryComponent
Mikko Rasa [Tue, 3 Jan 2023 17:04:22 +0000 (19:04 +0200)]
Explicitly create import libraries from BinaryComponent

They should not be created for modules.  The linker is still used to
create them since the process is quite different between toolchains.

2 years agoPlace incremental link information files in the temp directory
Mikko Rasa [Tue, 3 Jan 2023 14:15:49 +0000 (16:15 +0200)]
Place incremental link information files in the temp directory

2 years agoMake the clang and android plugins require gnutools
Mikko Rasa [Tue, 3 Jan 2023 12:17:31 +0000 (14:17 +0200)]
Make the clang and android plugins require gnutools

2 years agoMake it possible for plugins to require other plugins
Mikko Rasa [Tue, 3 Jan 2023 12:16:42 +0000 (14:16 +0200)]
Make it possible for plugins to require other plugins

This is used to ensure correct ordering if one plugin customizes tools
from another.

2 years agoAvoid exception if a directory in the package path does not exist
Mikko Rasa [Tue, 3 Jan 2023 11:48:03 +0000 (13:48 +0200)]
Avoid exception if a directory in the package path does not exist

2 years agoAdjust plugin dependencies
Mikko Rasa [Tue, 3 Jan 2023 11:01:09 +0000 (13:01 +0200)]
Adjust plugin dependencies

Mspcrypto dependency has been moved to msvctools, since the base program
doesn't need it.

2 years agoMake symbols hidden by default on Linux
Mikko Rasa [Tue, 3 Jan 2023 10:58:22 +0000 (12:58 +0200)]
Make symbols hidden by default on Linux

This will encourage me to add the visibility decorations where necessary
and reduce work needed for porting to Windows.

2 years agoAdd visibility decorations to the library and plugins
Mikko Rasa [Tue, 3 Jan 2023 10:57:31 +0000 (12:57 +0200)]
Add visibility decorations to the library and plugins

2 years agoAvoid double deletion of the module if a plugin fails to load
Mikko Rasa [Tue, 3 Jan 2023 00:54:27 +0000 (02:54 +0200)]
Avoid double deletion of the module if a plugin fails to load

The destructor of LoadedPlugin will delete it.

2 years agoRemove automatic export/import of symbols from GNU tools on Windows
Mikko Rasa [Tue, 3 Jan 2023 00:15:05 +0000 (02:15 +0200)]
Remove automatic export/import of symbols from GNU tools on Windows

MSVC can't do this, so I'm finally going to add the necessary decorations
to my libraries.

2 years agoAdd shell32 to libraries on Windows
Mikko Rasa [Mon, 2 Jan 2023 22:49:06 +0000 (00:49 +0200)]
Add shell32 to libraries on Windows

It's needed for SHGetKnownFolderPath

2 years agoMake sure the main target of a side effect is prepared
Mikko Rasa [Mon, 2 Jan 2023 22:48:26 +0000 (00:48 +0200)]
Make sure the main target of a side effect is prepared

Tool invocation is formed from the main target.

2 years agoDisable some warnings related to dllexport on MSVC
Mikko Rasa [Mon, 2 Jan 2023 22:47:43 +0000 (00:47 +0200)]
Disable some warnings related to dllexport on MSVC

2 years agoCreate import libraries with MSVC linker
Mikko Rasa [Mon, 2 Jan 2023 22:46:59 +0000 (00:46 +0200)]
Create import libraries with MSVC linker

2 years agoDefine a macro to indicate which component is being built
Mikko Rasa [Mon, 2 Jan 2023 22:24:59 +0000 (00:24 +0200)]
Define a macro to indicate which component is being built

This can be used in libraries to export or import functions across a DLL
interface as appropriate.

2 years agoExplicitly set import library name with MSVC linker
Mikko Rasa [Mon, 2 Jan 2023 22:23:11 +0000 (00:23 +0200)]
Explicitly set import library name with MSVC linker

Also disable import library if one does not exist in the build.

2 years agoRemove the now obsolete install_filename from FileTarget
Mikko Rasa [Mon, 2 Jan 2023 20:36:49 +0000 (22:36 +0200)]
Remove the now obsolete install_filename from FileTarget

2 years agoCorrectly fetch libmode when looking for dependencies of Binary
Mikko Rasa [Mon, 2 Jan 2023 20:36:13 +0000 (22:36 +0200)]
Correctly fetch libmode when looking for dependencies of Binary

2 years agoDon't use a versioned name for import libraries
Mikko Rasa [Mon, 2 Jan 2023 20:30:59 +0000 (22:30 +0200)]
Don't use a versioned name for import libraries

Windows doesn't have symlinks so the import library would not be found.
In fact, the import library is kind of like an soname symlink.

2 years agoBuild shared libraries directly to a versioned name
Mikko Rasa [Mon, 2 Jan 2023 20:25:48 +0000 (22:25 +0200)]
Build shared libraries directly to a versioned name

The MSVC linker does not have an equivalent to the GNU linker's soname
option, so the build filename must match the one the library will be
loaded with at runtime.

2 years agoUse the architecture's patterns to remove prefix from libname
Mikko Rasa [Mon, 2 Jan 2023 20:22:36 +0000 (22:22 +0200)]
Use the architecture's patterns to remove prefix from libname

With the MSVC toolchain a lib prefix is not added automatically when
searching for libraries, so removing it could result in a mismatch.

2 years agoRemove ExportDefinitions from ImportLibrary's constructor
Mikko Rasa [Mon, 2 Jan 2023 10:33:19 +0000 (12:33 +0200)]
Remove ExportDefinitions from ImportLibrary's constructor

It's not necessary with the MSVC toolchain.

2 years agoComment cleanup and other cosmetic fixes
Mikko Rasa [Fri, 30 Dec 2022 22:47:29 +0000 (00:47 +0200)]
Comment cleanup and other cosmetic fixes

2 years agoOptimize Binary::collect_build_info
Mikko Rasa [Fri, 30 Dec 2022 22:37:59 +0000 (00:37 +0200)]
Optimize Binary::collect_build_info

It's likely that all object files are built with very few different
tools, evne just one.  Updating the build info multiple times from the
same tool is pointless.

2 years agoAvoid observing the same header twice in ObjectFile
Mikko Rasa [Fri, 30 Dec 2022 22:34:41 +0000 (00:34 +0200)]
Avoid observing the same header twice in ObjectFile

This is a bit crude since the dependencies are not sorted, but still
avoids a massive slowdown from updating dependencies many times when a
header is generated.

2 years agoRewrite BinaryComponent::create_targets in a more general way
Mikko Rasa [Fri, 30 Dec 2022 17:00:15 +0000 (19:00 +0200)]
Rewrite BinaryComponent::create_targets in a more general way

Instead of assuming a generator-compiler-linker chain, with generators
only coming from the package, it now applies tools until it arrives at
object files, which are then fed to the linker.  This allows global
generator tools and also allows multiple generators to be chained, with
the caveat that if the chain contains more than one step operating on
a directory or a component, the results may be unpredictable.

2 years agoIf a binary package is not found, briefly describe what was missing
Mikko Rasa [Thu, 29 Dec 2022 18:30:10 +0000 (20:30 +0200)]
If a binary package is not found, briefly describe what was missing

2 years agoCorrect MSVC tools' input suffixes
Mikko Rasa [Thu, 29 Dec 2022 16:37:14 +0000 (18:37 +0200)]
Correct MSVC tools' input suffixes

2 years agoImprove package brokenness checks and problem reporting
Mikko Rasa [Thu, 29 Dec 2022 16:36:26 +0000 (18:36 +0200)]
Improve package brokenness checks and problem reporting

Packages are now considered broken if any required packages are broken,
and problems are reported for required packages as well.

2 years agoCheck for existence of Android NDK in AndroidLinker
Mikko Rasa [Thu, 29 Dec 2022 16:34:21 +0000 (18:34 +0200)]
Check for existence of Android NDK in AndroidLinker

2 years agoReplace the stdc++ library with gnustl_static on Android
Mikko Rasa [Thu, 29 Dec 2022 16:33:58 +0000 (18:33 +0200)]
Replace the stdc++ library with gnustl_static on Android

2 years agoAvoid preparing packages multiple times
Mikko Rasa [Thu, 29 Dec 2022 13:03:43 +0000 (15:03 +0200)]
Avoid preparing packages multiple times

2 years agoReject nonexistent sources
Mikko Rasa [Thu, 29 Dec 2022 12:54:52 +0000 (14:54 +0200)]
Reject nonexistent sources

2 years agoConvert the remaining tools into actual plugins
Mikko Rasa [Wed, 28 Dec 2022 15:50:27 +0000 (17:50 +0200)]
Convert the remaining tools into actual plugins

2 years agoAllow new component types to be registered at runtime
Mikko Rasa [Wed, 28 Dec 2022 15:35:15 +0000 (17:35 +0200)]
Allow new component types to be registered at runtime

2 years agoMove the VS project and solution generators to the MSVC plugin
Mikko Rasa [Wed, 28 Dec 2022 13:47:10 +0000 (15:47 +0200)]
Move the VS project and solution generators to the MSVC plugin

2 years agoRename builtintools to basetools
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.

2 years agoConvert builtin tools into a plugin
Mikko Rasa [Wed, 28 Dec 2022 13:39:12 +0000 (15:39 +0200)]
Convert builtin tools into a plugin

2 years agoAllow plugins to create additional targets in SourcePackages
Mikko Rasa [Wed, 28 Dec 2022 13:38:27 +0000 (15:38 +0200)]
Allow plugins to create additional targets in SourcePackages

2 years agoConvert the simpler toolchains into plugins
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.

2 years agoAdd an interface for dynamically loaded plugins
Mikko Rasa [Wed, 28 Dec 2022 13:16:21 +0000 (15:16 +0200)]
Add an interface for dynamically loaded plugins

2 years agoAvoid some failures from MicrosoftTools when running on Linux
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.

2 years agoRefactor VsSolutionFile::find_dependencies as recursive
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.

2 years agoDisallow two components with the same name
Mikko Rasa [Wed, 28 Dec 2022 11:43:23 +0000 (13:43 +0200)]
Disallow two components with the same name