A rule for building projects using the[Configure+Make][cm] build tool [cm]: https://www.gnu.org/prep/standards/html_node/Configuration.html
configure_make
configure_make(name, additional_inputs, additional_tools, alwayslink, args, autoconf, autoconf_env_vars, autoconf_options, autogen, autogen_command, autogen_env_vars, autogen_options, autoreconf, autoreconf_env_vars, autoreconf_options, configure_command, configure_env_vars, configure_in_place, configure_options, data, defines, deps, env, install_prefix, lib_name, lib_source, linkopts, make_commands, out_bin_dir, out_binaries, out_headers_only, out_include_dir, out_interface_libs, out_lib_dir, out_shared_libs, out_static_libs, postfix_script, targets, tools_deps)
Rule for building external libraries with configure-make pattern. Some 'configure' script is invoked with --prefix=install (by default), and other parameters for compilation and linking, taken from Bazel C/C++ toolchain and passed dependencies. After configuration, GNU Make is called.
ATTRIBUTES
Name | Description | Type | Mandatory | Default |
---|---|---|---|---|
name | A unique name for this target. | Name | required | |
additional_inputs | Optional additional inputs to be declared as needed for the shell script action.Not used by the shell script part in cc_external_rule_impl. | List of labels | optional | [] |
additional_tools | Optional additional tools needed for the building. Not used by the shell script part in cc_external_rule_impl. | List of labels | optional | [] |
alwayslink | Optional. if true, link all the object files from the static library, even if they are not used. | Boolean | optional | False |
args | A list of arguments to pass to the call to make | List of strings | optional | [] |
autoconf | Set to True if 'autoconf' should be invoked before 'configure', currently requires configure_in_place to be True. | Boolean | optional | False |
autoconf_env_vars | Environment variables to be set for 'autoconf' invocation. | Dictionary: String -> String | optional | {} |
autoconf_options | Any options to be put in the 'autoconf.sh' command line. | List of strings | optional | [] |
autogen | Set to True if 'autogen.sh' should be invoked before 'configure', currently requires configure_in_place to be True. | Boolean | optional | False |
autogen_command | The name of the autogen script file, default: autogen.sh. Many projects use autogen.sh however the Autotools FAQ recommends bootstrap so we provide this option to support that. | String | optional | "autogen.sh" |
autogen_env_vars | Environment variables to be set for 'autogen' invocation. | Dictionary: String -> String | optional | {} |
autogen_options | Any options to be put in the 'autogen.sh' command line. | List of strings | optional | [] |
autoreconf | Set to True if 'autoreconf' should be invoked before 'configure.', currently requires configure_in_place to be True. | Boolean | optional | False |
autoreconf_env_vars | Environment variables to be set for 'autoreconf' invocation. | Dictionary: String -> String | optional | {} |
autoreconf_options | Any options to be put in the 'autoreconf.sh' command line. | List of strings | optional | [] |
configure_command | The name of the configuration script file, default: configure. The file must be in the root of the source directory. | String | optional | "configure" |
configure_env_vars | Environment variables to be set for the 'configure' invocation. | Dictionary: String -> String | optional | {} |
configure_in_place | Set to True if 'configure' should be invoked in place, i.e. from its enclosing directory. | Boolean | optional | False |
configure_options | Any options to be put on the 'configure' command line. | List of strings | optional | [] |
data | Files needed by this rule at runtime. May list file or rule targets. Generally allows any target. | List of labels | optional | [] |
defines | Optional compilation definitions to be passed to the dependencies of this library. They are NOT passed to the compiler, you should duplicate them in the configuration options. | List of strings | optional | [] |
deps | Optional dependencies to be copied into the directory structure. Typically those directly required for the external building of the library/binaries. (i.e. those that the external buidl system will be looking for and paths to which are provided by the calling rule) | List of labels | optional | [] |
env | Environment variables to set during the build. $(execpath) macros may be used to point at files which are listed as data deps, tools_deps, or additional_tools, but unlike with other rules, these will be replaced with absolute paths to those files, because the build does not run in the exec root. No other macros are supported. | Dictionary: String -> String | optional | {} |
install_prefix | Install prefix, i.e. relative path to where to install the result of the build. Passed to the 'configure' script with --prefix flag. | String | optional | "" |
lib_name | Library name. Defines the name of the install directory and the name of the static library, if no output files parameters are defined (any of static_libraries, shared_libraries, interface_libraries, binaries_names) Optional. If not defined, defaults to the target's name. | String | optional | "" |
lib_source | Label with source code to build. Typically a filegroup for the source of remote repository. Mandatory. | Label | required | |
linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
make_commands | Optional make commands. | List of strings | optional | ["make", "make install"] |
out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
out_lib_dir | Optional name of the output subdirectory with the library files, defaults to 'lib'. | String | optional | "lib" |
out_shared_libs | Optional names of the resulting shared libraries. | List of strings | optional | [] |
out_static_libs | Optional names of the resulting static libraries. Note that if out_headers_only , out_static_libs , out_shared_libs , and out_binaries are not set, default lib_name.a /lib_name.lib static library is assumed | List of strings | optional | [] |
postfix_script | Optional part of the shell script to be added after the make commands | String | optional | "" |
targets | A list of targets within the foreign build system to produce. An empty string ("" ) will result in a call to the underlying build system with no explicit target set | List of strings | optional | ["", "install"] |
tools_deps | Optional tools to be copied into the directory structure. Similar to deps, those directly required for the external building of the library/binaries. | List of labels | optional | [] |