Releases: jimporter/bfg9000
v0.7.1
v0.7.0
bfg9000 v0.7.0 has been released! It's available on PyPI.
Highlighted changes
- Qt dependencies are now specified via
package('Qt', '<component>')
rather thanpackage('Qt<component>')
- bfg9000 no longer automatically installs
patchelf
on Linux systems - Add support for resolving external package dependencies via mopack
- Add
bfg9000 run
command to allow executing other commands using the environment variables for a given build - Add support for installing man pages
- Create
compile_commands.json
when generating build scripts pkg-config
executable can now be found by guessing based on other compilers- Add
bfg9000 generate-completion
to generate shell-completion functions - Add support for
CLICOLOR
andCLICOLOR_FORCE
environment variables to control whether to display colors in terminal output
v0.6.0
bfg9000 v0.6.0 has been released! It's available on PyPI as well as an Ubuntu PPA: ppa:jimporter/stable.
Highlighted changes
- Drop support for Python 2
- Add support for including multiple
build.bfg
(andoptions.bfg
) files from subdirectories viasubmodule()
find_files()
andfind_paths()
have been redesigned to support recursive globs- The default list of excluded globs for
find_files()
can now be customized viaproject(find_exclude=[...])
pkg_config()
now defaults toauto_fill=False
- Link steps (
executable
,library
, etc) now accept anextra_compile_deps
argument to forward on to the compilation step generated_source()
steps are now automatically created as necessary for files passed toobject_file()
, if possible- Try to find the right compiler to use for C-family languages by guessing based on other compilers in the family (e.g. if
CXX=g++
, guess that the C compiler isgcc
) - Paths with a trailing
/
are now treated as directory paths, and when passed toauto_file()
will create a directory object - Add support for compiling Windows
.rc
files - Allow customizing
install
locations for specific files via thedirectory
argument
For a full list of the changes made to this release, see the changelog.
v0.5.1
bfg9000 v0.5.1 has been released! It's available on PyPI as well as an Ubuntu PPA: ppa:jimporter/stable.
Bug fixes
- Depfiles generated by compile steps are now properly included into Makefiles
- Include directories passed to via
include
and libraries passed vialibs
are now listed before those frompackages
when building - Fixed linking to shared libraries located in the source directory
v0.5.0
bfg9000 v0.5.0 has been released! It's available on PyPI as well as an Ubuntu PPA: ppa:jimporter/stable.
Highlighted changes
- Add
generated_source()
to allow generating source code from domain-specific languages - Add support for
lex
,yacc
, and Qt build tools (moc
,rcc
,uic
) - Add the ability to use placeholders for
build_step()
andcommand()
- Add an
auto_file()
function that infers the kind of file based on its extension;build_step()
now uses this by default for outputs - Add
copy_file()
andcopy_files()
functions - Add
safe_str()
andsafe_format()
to help safely build command string - Expose
Path
object to bfg scripts find_files()
redesigned and split intofind_files()
andfind_paths()
; simple cases should still work, but more complex uses will need adjusted- Implicitly-defined object files (e.g. those generated by
executable()
) are placed in an intermediate directory; callproject(intermediate_dirs=False)
to disable this
For a full list of the changes made to this release, see the changelog.
v0.4.1
bfg9000 v0.4.1 has been released! It's available on PyPI as well as an Ubuntu PPA: ppa:jimporter/stable.
Changes
- Fix using semantic options in
global_options
For a full list of the changes made to this release, see the changelog.
v0.4.0
bfg9000 v0.4.0 has been released! It's available on PyPI as well as an Ubuntu PPA: ppa:jimporter/stable.
Highlighted changes
- Compilers and linkers now support semantic options, abstracting away the differences between compiler flavors
- Add support for cross-compilation
- Toolchain files can be used to simplify setting up build configuration options
- Add
info
,warn
, anddebug
builtins to let build scripts print messages via bfg's logging system - Add support for module-definition files when linking
.exe
or.dll
files - Build steps now have a (customizable) friendly description when using the Ninja backend
- Makefiles generated by bfg now have a
clean
target env.platform
has been split intoenv.host_platform
andenv.target_platform
- Platform names are reworked;
'windows'
is now'winnt'
and'darwin'
is'macos'
For a full list of the changes made to this release, see the changelog.
v0.3.1
bfg9000 v0.3.1 has been released! It's available on PyPI as well as an Ubuntu PPA: ppa:jimporter/stable.
Changes
- Fix an issue with creating the build directory during the configuration process
For a full list of the changes made to this release, see the changelog.
v0.3.0
bfg9000 v0.3.0 has been released! It's available on PyPI as well as an Ubuntu PPA: ppa:jimporter/stable.
Highlighted Changes
- Replace
system_package()
andpkgconfig_package()
with a generic package resolver:package()
- Add
headers
argument topackage()
to find header files andlibs
to specify library names if pkg-config lookup fails - Support Java/Scala
- Add support for user-defined arguments
- Add a
library()
function that builds shared and/or static libraries per the user's preference - Add support for generating pkg-config
.pc
files - Add a
framework()
function to specify macOS frameworks to use for a build - Automatically request sudo elevation when installing builds to a system directory
For a full list of the changes made to this release, see the changelog.
v0.2.0
bfg9000 v0.2.0 has been released! It's available on PyPI as well as an Ubuntu PPA: ppa:jimporter/stable
Highlighted Changes
- Support Objective C/C++
- Warn users if necessary build tools can't be found by bfg9000
- Support versioning of shared libraries on POSIX systems
- Support resolving packages via pkg-config
- Locally-built static libraries now forward their options to binaries that link
to them - Add support for building a distribution of the sources (
make dist
) - Allow running custom build steps via
build_step()
For a full list of the changes made to this release, see the changelog.