Skip to content

Releases: jimporter/bfg9000

v0.7.1

26 May 23:28
Compare
Choose a tag to compare

bfg9000 v0.7.1 has been released! It's available on PyPI.

Changes

  • When using the PKG_CONFIG_PATH specified by mopack, add it to any existing PKG_CONFIG_PATH from the environment
  • Don't explicitly include default #include paths on CC-like compilers

v0.7.0

22 May 02:08
Compare
Choose a tag to compare

bfg9000 v0.7.0 has been released! It's available on PyPI.

Highlighted changes

  • Qt dependencies are now specified via package('Qt', '<component>') rather than package('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 and CLICOLOR_FORCE environment variables to control whether to display colors in terminal output

v0.6.0

12 Sep 19:04
Compare
Choose a tag to compare

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 (and options.bfg) files from subdirectories via submodule()
  • find_files() and find_paths() have been redesigned to support recursive globs
  • The default list of excluded globs for find_files() can now be customized via project(find_exclude=[...])
  • pkg_config() now defaults to auto_fill=False
  • Link steps (executable, library, etc) now accept an extra_compile_deps argument to forward on to the compilation step
  • generated_source() steps are now automatically created as necessary for files passed to object_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 is gcc)
  • Paths with a trailing / are now treated as directory paths, and when passed to auto_file() will create a directory object
  • Add support for compiling Windows .rc files
  • Allow customizing install locations for specific files via the directory argument

For a full list of the changes made to this release, see the changelog.

v0.5.1

07 Dec 19:16
Compare
Choose a tag to compare

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 via libs are now listed before those from packages when building
  • Fixed linking to shared libraries located in the source directory

v0.5.0

25 Nov 19:38
Compare
Choose a tag to compare

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() and command()
  • 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() and copy_files() functions
  • Add safe_str() and safe_format() to help safely build command string
  • Expose Path object to bfg scripts
  • find_files() redesigned and split into find_files() and find_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; call project(intermediate_dirs=False) to disable this

For a full list of the changes made to this release, see the changelog.

v0.4.1

31 Aug 17:58
Compare
Choose a tag to compare

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

31 Aug 17:55
Compare
Choose a tag to compare

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, and debug 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 into env.host_platform and env.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

01 Jun 23:13
Compare
Choose a tag to compare

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

01 Jun 20:02
Compare
Choose a tag to compare

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() and pkgconfig_package() with a generic package resolver: package()
  • Add headers argument to package() to find header files and libs 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

26 Jun 16:08
Compare
Choose a tag to compare

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.