Provide out_data_dirs attribute (#419) (#622)

This change facilitates hermetic python toolchains, as demonstrated by
the test added in this commit.
This commit is contained in:
jheaff1 2021-06-22 16:51:29 +01:00 committed by GitHub
parent 96dc580194
commit 5663d884a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 266 additions and 35 deletions

View File

@ -15,9 +15,9 @@ should be used instead.
<pre>
boost_build(<a href="#boost_build-name">name</a>, <a href="#boost_build-additional_inputs">additional_inputs</a>, <a href="#boost_build-additional_tools">additional_tools</a>, <a href="#boost_build-alwayslink">alwayslink</a>, <a href="#boost_build-bootstrap_options">bootstrap_options</a>, <a href="#boost_build-data">data</a>, <a href="#boost_build-defines">defines</a>,
<a href="#boost_build-deps">deps</a>, <a href="#boost_build-env">env</a>, <a href="#boost_build-lib_name">lib_name</a>, <a href="#boost_build-lib_source">lib_source</a>, <a href="#boost_build-linkopts">linkopts</a>, <a href="#boost_build-out_bin_dir">out_bin_dir</a>, <a href="#boost_build-out_binaries">out_binaries</a>, <a href="#boost_build-out_headers_only">out_headers_only</a>,
<a href="#boost_build-out_include_dir">out_include_dir</a>, <a href="#boost_build-out_interface_libs">out_interface_libs</a>, <a href="#boost_build-out_lib_dir">out_lib_dir</a>, <a href="#boost_build-out_shared_libs">out_shared_libs</a>, <a href="#boost_build-out_static_libs">out_static_libs</a>,
<a href="#boost_build-postfix_script">postfix_script</a>, <a href="#boost_build-tools_deps">tools_deps</a>, <a href="#boost_build-user_options">user_options</a>)
<a href="#boost_build-deps">deps</a>, <a href="#boost_build-env">env</a>, <a href="#boost_build-lib_name">lib_name</a>, <a href="#boost_build-lib_source">lib_source</a>, <a href="#boost_build-linkopts">linkopts</a>, <a href="#boost_build-out_bin_dir">out_bin_dir</a>, <a href="#boost_build-out_binaries">out_binaries</a>, <a href="#boost_build-out_data_dirs">out_data_dirs</a>,
<a href="#boost_build-out_headers_only">out_headers_only</a>, <a href="#boost_build-out_include_dir">out_include_dir</a>, <a href="#boost_build-out_interface_libs">out_interface_libs</a>, <a href="#boost_build-out_lib_dir">out_lib_dir</a>, <a href="#boost_build-out_shared_libs">out_shared_libs</a>,
<a href="#boost_build-out_static_libs">out_static_libs</a>, <a href="#boost_build-postfix_script">postfix_script</a>, <a href="#boost_build-tools_deps">tools_deps</a>, <a href="#boost_build-user_options">user_options</a>)
</pre>
Rule for building Boost. Invokes bootstrap.sh and then b2 install.
@ -41,6 +41,7 @@ Rule for building Boost. Invokes bootstrap.sh and then b2 install.
| <a id="boost_build-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="boost_build-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="boost_build-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="boost_build-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="boost_build-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="boost_build-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="boost_build-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
@ -59,9 +60,9 @@ Rule for building Boost. Invokes bootstrap.sh and then b2 install.
<pre>
cmake(<a href="#cmake-name">name</a>, <a href="#cmake-additional_inputs">additional_inputs</a>, <a href="#cmake-additional_tools">additional_tools</a>, <a href="#cmake-alwayslink">alwayslink</a>, <a href="#cmake-build_args">build_args</a>, <a href="#cmake-cache_entries">cache_entries</a>, <a href="#cmake-data">data</a>,
<a href="#cmake-defines">defines</a>, <a href="#cmake-deps">deps</a>, <a href="#cmake-env">env</a>, <a href="#cmake-env_vars">env_vars</a>, <a href="#cmake-generate_args">generate_args</a>, <a href="#cmake-generate_crosstool_file">generate_crosstool_file</a>, <a href="#cmake-install">install</a>, <a href="#cmake-install_args">install_args</a>,
<a href="#cmake-lib_name">lib_name</a>, <a href="#cmake-lib_source">lib_source</a>, <a href="#cmake-linkopts">linkopts</a>, <a href="#cmake-out_bin_dir">out_bin_dir</a>, <a href="#cmake-out_binaries">out_binaries</a>, <a href="#cmake-out_headers_only">out_headers_only</a>, <a href="#cmake-out_include_dir">out_include_dir</a>,
<a href="#cmake-out_interface_libs">out_interface_libs</a>, <a href="#cmake-out_lib_dir">out_lib_dir</a>, <a href="#cmake-out_shared_libs">out_shared_libs</a>, <a href="#cmake-out_static_libs">out_static_libs</a>, <a href="#cmake-postfix_script">postfix_script</a>, <a href="#cmake-targets">targets</a>,
<a href="#cmake-tools_deps">tools_deps</a>, <a href="#cmake-working_directory">working_directory</a>)
<a href="#cmake-lib_name">lib_name</a>, <a href="#cmake-lib_source">lib_source</a>, <a href="#cmake-linkopts">linkopts</a>, <a href="#cmake-out_bin_dir">out_bin_dir</a>, <a href="#cmake-out_binaries">out_binaries</a>, <a href="#cmake-out_data_dirs">out_data_dirs</a>, <a href="#cmake-out_headers_only">out_headers_only</a>,
<a href="#cmake-out_include_dir">out_include_dir</a>, <a href="#cmake-out_interface_libs">out_interface_libs</a>, <a href="#cmake-out_lib_dir">out_lib_dir</a>, <a href="#cmake-out_shared_libs">out_shared_libs</a>, <a href="#cmake-out_static_libs">out_static_libs</a>,
<a href="#cmake-postfix_script">postfix_script</a>, <a href="#cmake-targets">targets</a>, <a href="#cmake-tools_deps">tools_deps</a>, <a href="#cmake-working_directory">working_directory</a>)
</pre>
Rule for building external library with CMake.
@ -91,6 +92,7 @@ Rule for building external library with CMake.
| <a id="cmake-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="cmake-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="cmake-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="cmake-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="cmake-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="cmake-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="cmake-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
@ -132,8 +134,9 @@ configure_make(<a href="#configure_make-name">name</a>, <a href="#configure_make
<a href="#configure_make-autogen_options">autogen_options</a>, <a href="#configure_make-autoreconf">autoreconf</a>, <a href="#configure_make-autoreconf_env_vars">autoreconf_env_vars</a>, <a href="#configure_make-autoreconf_options">autoreconf_options</a>,
<a href="#configure_make-configure_command">configure_command</a>, <a href="#configure_make-configure_env_vars">configure_env_vars</a>, <a href="#configure_make-configure_in_place">configure_in_place</a>, <a href="#configure_make-configure_options">configure_options</a>, <a href="#configure_make-data">data</a>,
<a href="#configure_make-defines">defines</a>, <a href="#configure_make-deps">deps</a>, <a href="#configure_make-env">env</a>, <a href="#configure_make-install_prefix">install_prefix</a>, <a href="#configure_make-lib_name">lib_name</a>, <a href="#configure_make-lib_source">lib_source</a>, <a href="#configure_make-linkopts">linkopts</a>, <a href="#configure_make-make_commands">make_commands</a>,
<a href="#configure_make-out_bin_dir">out_bin_dir</a>, <a href="#configure_make-out_binaries">out_binaries</a>, <a href="#configure_make-out_headers_only">out_headers_only</a>, <a href="#configure_make-out_include_dir">out_include_dir</a>, <a href="#configure_make-out_interface_libs">out_interface_libs</a>,
<a href="#configure_make-out_lib_dir">out_lib_dir</a>, <a href="#configure_make-out_shared_libs">out_shared_libs</a>, <a href="#configure_make-out_static_libs">out_static_libs</a>, <a href="#configure_make-postfix_script">postfix_script</a>, <a href="#configure_make-targets">targets</a>, <a href="#configure_make-tools_deps">tools_deps</a>)
<a href="#configure_make-out_bin_dir">out_bin_dir</a>, <a href="#configure_make-out_binaries">out_binaries</a>, <a href="#configure_make-out_data_dirs">out_data_dirs</a>, <a href="#configure_make-out_headers_only">out_headers_only</a>, <a href="#configure_make-out_include_dir">out_include_dir</a>,
<a href="#configure_make-out_interface_libs">out_interface_libs</a>, <a href="#configure_make-out_lib_dir">out_lib_dir</a>, <a href="#configure_make-out_shared_libs">out_shared_libs</a>, <a href="#configure_make-out_static_libs">out_static_libs</a>, <a href="#configure_make-postfix_script">postfix_script</a>,
<a href="#configure_make-targets">targets</a>, <a href="#configure_make-tools_deps">tools_deps</a>)
</pre>
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.
@ -173,6 +176,7 @@ Rule for building external libraries with configure-make pattern. Some 'configur
| <a id="configure_make-make_commands"></a>make_commands | Optional make commands. | List of strings | optional | ["make", "make install"] |
| <a id="configure_make-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="configure_make-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="configure_make-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="configure_make-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="configure_make-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="configure_make-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
@ -190,9 +194,9 @@ Rule for building external libraries with configure-make pattern. Some 'configur
<pre>
make(<a href="#make-name">name</a>, <a href="#make-additional_inputs">additional_inputs</a>, <a href="#make-additional_tools">additional_tools</a>, <a href="#make-alwayslink">alwayslink</a>, <a href="#make-args">args</a>, <a href="#make-data">data</a>, <a href="#make-defines">defines</a>, <a href="#make-deps">deps</a>, <a href="#make-env">env</a>,
<a href="#make-lib_name">lib_name</a>, <a href="#make-lib_source">lib_source</a>, <a href="#make-linkopts">linkopts</a>, <a href="#make-out_bin_dir">out_bin_dir</a>, <a href="#make-out_binaries">out_binaries</a>, <a href="#make-out_headers_only">out_headers_only</a>, <a href="#make-out_include_dir">out_include_dir</a>,
<a href="#make-out_interface_libs">out_interface_libs</a>, <a href="#make-out_lib_dir">out_lib_dir</a>, <a href="#make-out_shared_libs">out_shared_libs</a>, <a href="#make-out_static_libs">out_static_libs</a>, <a href="#make-postfix_script">postfix_script</a>, <a href="#make-targets">targets</a>,
<a href="#make-tools_deps">tools_deps</a>)
<a href="#make-lib_name">lib_name</a>, <a href="#make-lib_source">lib_source</a>, <a href="#make-linkopts">linkopts</a>, <a href="#make-out_bin_dir">out_bin_dir</a>, <a href="#make-out_binaries">out_binaries</a>, <a href="#make-out_data_dirs">out_data_dirs</a>, <a href="#make-out_headers_only">out_headers_only</a>,
<a href="#make-out_include_dir">out_include_dir</a>, <a href="#make-out_interface_libs">out_interface_libs</a>, <a href="#make-out_lib_dir">out_lib_dir</a>, <a href="#make-out_shared_libs">out_shared_libs</a>, <a href="#make-out_static_libs">out_static_libs</a>,
<a href="#make-postfix_script">postfix_script</a>, <a href="#make-targets">targets</a>, <a href="#make-tools_deps">tools_deps</a>)
</pre>
Rule for building external libraries with GNU Make. GNU Make commands (make and make install by default) are invoked with prefix="install" (by default), and other environment variables for compilation and linking, taken from Bazel C/C++ toolchain and passed dependencies.
@ -216,6 +220,7 @@ Rule for building external libraries with GNU Make. GNU Make commands (make and
| <a id="make-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="make-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="make-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="make-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="make-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="make-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="make-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
@ -272,7 +277,7 @@ Rule for defining the toolchain data of the native tools (cmake, ninja), to be u
<pre>
ninja(<a href="#ninja-name">name</a>, <a href="#ninja-additional_inputs">additional_inputs</a>, <a href="#ninja-additional_tools">additional_tools</a>, <a href="#ninja-alwayslink">alwayslink</a>, <a href="#ninja-args">args</a>, <a href="#ninja-data">data</a>, <a href="#ninja-defines">defines</a>, <a href="#ninja-deps">deps</a>, <a href="#ninja-directory">directory</a>,
<a href="#ninja-env">env</a>, <a href="#ninja-lib_name">lib_name</a>, <a href="#ninja-lib_source">lib_source</a>, <a href="#ninja-linkopts">linkopts</a>, <a href="#ninja-out_bin_dir">out_bin_dir</a>, <a href="#ninja-out_binaries">out_binaries</a>, <a href="#ninja-out_headers_only">out_headers_only</a>,
<a href="#ninja-env">env</a>, <a href="#ninja-lib_name">lib_name</a>, <a href="#ninja-lib_source">lib_source</a>, <a href="#ninja-linkopts">linkopts</a>, <a href="#ninja-out_bin_dir">out_bin_dir</a>, <a href="#ninja-out_binaries">out_binaries</a>, <a href="#ninja-out_data_dirs">out_data_dirs</a>, <a href="#ninja-out_headers_only">out_headers_only</a>,
<a href="#ninja-out_include_dir">out_include_dir</a>, <a href="#ninja-out_interface_libs">out_interface_libs</a>, <a href="#ninja-out_lib_dir">out_lib_dir</a>, <a href="#ninja-out_shared_libs">out_shared_libs</a>, <a href="#ninja-out_static_libs">out_static_libs</a>,
<a href="#ninja-postfix_script">postfix_script</a>, <a href="#ninja-targets">targets</a>, <a href="#ninja-tools_deps">tools_deps</a>)
</pre>
@ -299,6 +304,7 @@ Rule for building external libraries with [Ninja](https://ninja-build.org/).
| <a id="ninja-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="ninja-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="ninja-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="ninja-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="ninja-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="ninja-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="ninja-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |

View File

@ -138,9 +138,9 @@ cmake(
<pre>
cmake(<a href="#cmake-name">name</a>, <a href="#cmake-additional_inputs">additional_inputs</a>, <a href="#cmake-additional_tools">additional_tools</a>, <a href="#cmake-alwayslink">alwayslink</a>, <a href="#cmake-build_args">build_args</a>, <a href="#cmake-build_data">build_data</a>, <a href="#cmake-cache_entries">cache_entries</a>,
<a href="#cmake-data">data</a>, <a href="#cmake-defines">defines</a>, <a href="#cmake-deps">deps</a>, <a href="#cmake-env">env</a>, <a href="#cmake-generate_args">generate_args</a>, <a href="#cmake-generate_crosstool_file">generate_crosstool_file</a>, <a href="#cmake-install">install</a>, <a href="#cmake-install_args">install_args</a>,
<a href="#cmake-lib_name">lib_name</a>, <a href="#cmake-lib_source">lib_source</a>, <a href="#cmake-linkopts">linkopts</a>, <a href="#cmake-out_bin_dir">out_bin_dir</a>, <a href="#cmake-out_binaries">out_binaries</a>, <a href="#cmake-out_headers_only">out_headers_only</a>, <a href="#cmake-out_include_dir">out_include_dir</a>,
<a href="#cmake-out_interface_libs">out_interface_libs</a>, <a href="#cmake-out_lib_dir">out_lib_dir</a>, <a href="#cmake-out_shared_libs">out_shared_libs</a>, <a href="#cmake-out_static_libs">out_static_libs</a>, <a href="#cmake-postfix_script">postfix_script</a>, <a href="#cmake-targets">targets</a>,
<a href="#cmake-tool_prefix">tool_prefix</a>, <a href="#cmake-tools_deps">tools_deps</a>, <a href="#cmake-working_directory">working_directory</a>)
<a href="#cmake-lib_name">lib_name</a>, <a href="#cmake-lib_source">lib_source</a>, <a href="#cmake-linkopts">linkopts</a>, <a href="#cmake-out_bin_dir">out_bin_dir</a>, <a href="#cmake-out_binaries">out_binaries</a>, <a href="#cmake-out_data_dirs">out_data_dirs</a>, <a href="#cmake-out_headers_only">out_headers_only</a>,
<a href="#cmake-out_include_dir">out_include_dir</a>, <a href="#cmake-out_interface_libs">out_interface_libs</a>, <a href="#cmake-out_lib_dir">out_lib_dir</a>, <a href="#cmake-out_shared_libs">out_shared_libs</a>, <a href="#cmake-out_static_libs">out_static_libs</a>,
<a href="#cmake-postfix_script">postfix_script</a>, <a href="#cmake-targets">targets</a>, <a href="#cmake-tool_prefix">tool_prefix</a>, <a href="#cmake-tools_deps">tools_deps</a>, <a href="#cmake-working_directory">working_directory</a>)
</pre>
Rule for building external library with CMake.
@ -170,6 +170,7 @@ Rule for building external library with CMake.
| <a id="cmake-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="cmake-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="cmake-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="cmake-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="cmake-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="cmake-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="cmake-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |

View File

@ -13,9 +13,9 @@ configure_make(<a href="#configure_make-name">name</a>, <a href="#configure_make
<a href="#configure_make-autoconf_options">autoconf_options</a>, <a href="#configure_make-autogen">autogen</a>, <a href="#configure_make-autogen_command">autogen_command</a>, <a href="#configure_make-autogen_options">autogen_options</a>, <a href="#configure_make-autoreconf">autoreconf</a>,
<a href="#configure_make-autoreconf_options">autoreconf_options</a>, <a href="#configure_make-build_data">build_data</a>, <a href="#configure_make-configure_command">configure_command</a>, <a href="#configure_make-configure_in_place">configure_in_place</a>,
<a href="#configure_make-configure_options">configure_options</a>, <a href="#configure_make-configure_prefix">configure_prefix</a>, <a href="#configure_make-data">data</a>, <a href="#configure_make-defines">defines</a>, <a href="#configure_make-deps">deps</a>, <a href="#configure_make-env">env</a>, <a href="#configure_make-install_prefix">install_prefix</a>,
<a href="#configure_make-lib_name">lib_name</a>, <a href="#configure_make-lib_source">lib_source</a>, <a href="#configure_make-linkopts">linkopts</a>, <a href="#configure_make-out_bin_dir">out_bin_dir</a>, <a href="#configure_make-out_binaries">out_binaries</a>, <a href="#configure_make-out_headers_only">out_headers_only</a>,
<a href="#configure_make-out_include_dir">out_include_dir</a>, <a href="#configure_make-out_interface_libs">out_interface_libs</a>, <a href="#configure_make-out_lib_dir">out_lib_dir</a>, <a href="#configure_make-out_shared_libs">out_shared_libs</a>, <a href="#configure_make-out_static_libs">out_static_libs</a>,
<a href="#configure_make-postfix_script">postfix_script</a>, <a href="#configure_make-targets">targets</a>, <a href="#configure_make-tool_prefix">tool_prefix</a>, <a href="#configure_make-tools_deps">tools_deps</a>)
<a href="#configure_make-lib_name">lib_name</a>, <a href="#configure_make-lib_source">lib_source</a>, <a href="#configure_make-linkopts">linkopts</a>, <a href="#configure_make-out_bin_dir">out_bin_dir</a>, <a href="#configure_make-out_binaries">out_binaries</a>, <a href="#configure_make-out_data_dirs">out_data_dirs</a>,
<a href="#configure_make-out_headers_only">out_headers_only</a>, <a href="#configure_make-out_include_dir">out_include_dir</a>, <a href="#configure_make-out_interface_libs">out_interface_libs</a>, <a href="#configure_make-out_lib_dir">out_lib_dir</a>, <a href="#configure_make-out_shared_libs">out_shared_libs</a>,
<a href="#configure_make-out_static_libs">out_static_libs</a>, <a href="#configure_make-postfix_script">postfix_script</a>, <a href="#configure_make-targets">targets</a>, <a href="#configure_make-tool_prefix">tool_prefix</a>, <a href="#configure_make-tools_deps">tools_deps</a>)
</pre>
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.
@ -52,6 +52,7 @@ Rule for building external libraries with configure-make pattern. Some 'configur
| <a id="configure_make-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="configure_make-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="configure_make-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="configure_make-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="configure_make-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="configure_make-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="configure_make-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |

View File

@ -22,8 +22,8 @@
<pre>
boost_build(<a href="#boost_build-name">name</a>, <a href="#boost_build-additional_inputs">additional_inputs</a>, <a href="#boost_build-additional_tools">additional_tools</a>, <a href="#boost_build-alwayslink">alwayslink</a>, <a href="#boost_build-bootstrap_options">bootstrap_options</a>, <a href="#boost_build-build_data">build_data</a>,
<a href="#boost_build-data">data</a>, <a href="#boost_build-defines">defines</a>, <a href="#boost_build-deps">deps</a>, <a href="#boost_build-env">env</a>, <a href="#boost_build-lib_name">lib_name</a>, <a href="#boost_build-lib_source">lib_source</a>, <a href="#boost_build-linkopts">linkopts</a>, <a href="#boost_build-out_bin_dir">out_bin_dir</a>, <a href="#boost_build-out_binaries">out_binaries</a>,
<a href="#boost_build-out_headers_only">out_headers_only</a>, <a href="#boost_build-out_include_dir">out_include_dir</a>, <a href="#boost_build-out_interface_libs">out_interface_libs</a>, <a href="#boost_build-out_lib_dir">out_lib_dir</a>, <a href="#boost_build-out_shared_libs">out_shared_libs</a>,
<a href="#boost_build-out_static_libs">out_static_libs</a>, <a href="#boost_build-postfix_script">postfix_script</a>, <a href="#boost_build-tool_prefix">tool_prefix</a>, <a href="#boost_build-tools_deps">tools_deps</a>, <a href="#boost_build-user_options">user_options</a>)
<a href="#boost_build-out_data_dirs">out_data_dirs</a>, <a href="#boost_build-out_headers_only">out_headers_only</a>, <a href="#boost_build-out_include_dir">out_include_dir</a>, <a href="#boost_build-out_interface_libs">out_interface_libs</a>, <a href="#boost_build-out_lib_dir">out_lib_dir</a>,
<a href="#boost_build-out_shared_libs">out_shared_libs</a>, <a href="#boost_build-out_static_libs">out_static_libs</a>, <a href="#boost_build-postfix_script">postfix_script</a>, <a href="#boost_build-tool_prefix">tool_prefix</a>, <a href="#boost_build-tools_deps">tools_deps</a>, <a href="#boost_build-user_options">user_options</a>)
</pre>
Rule for building Boost. Invokes bootstrap.sh and then b2 install.
@ -48,6 +48,7 @@ Rule for building Boost. Invokes bootstrap.sh and then b2 install.
| <a id="boost_build-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="boost_build-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="boost_build-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="boost_build-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="boost_build-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="boost_build-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="boost_build-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
@ -67,9 +68,9 @@ Rule for building Boost. Invokes bootstrap.sh and then b2 install.
<pre>
cmake(<a href="#cmake-name">name</a>, <a href="#cmake-additional_inputs">additional_inputs</a>, <a href="#cmake-additional_tools">additional_tools</a>, <a href="#cmake-alwayslink">alwayslink</a>, <a href="#cmake-build_args">build_args</a>, <a href="#cmake-build_data">build_data</a>, <a href="#cmake-cache_entries">cache_entries</a>,
<a href="#cmake-data">data</a>, <a href="#cmake-defines">defines</a>, <a href="#cmake-deps">deps</a>, <a href="#cmake-env">env</a>, <a href="#cmake-generate_args">generate_args</a>, <a href="#cmake-generate_crosstool_file">generate_crosstool_file</a>, <a href="#cmake-install">install</a>, <a href="#cmake-install_args">install_args</a>,
<a href="#cmake-lib_name">lib_name</a>, <a href="#cmake-lib_source">lib_source</a>, <a href="#cmake-linkopts">linkopts</a>, <a href="#cmake-out_bin_dir">out_bin_dir</a>, <a href="#cmake-out_binaries">out_binaries</a>, <a href="#cmake-out_headers_only">out_headers_only</a>, <a href="#cmake-out_include_dir">out_include_dir</a>,
<a href="#cmake-out_interface_libs">out_interface_libs</a>, <a href="#cmake-out_lib_dir">out_lib_dir</a>, <a href="#cmake-out_shared_libs">out_shared_libs</a>, <a href="#cmake-out_static_libs">out_static_libs</a>, <a href="#cmake-postfix_script">postfix_script</a>, <a href="#cmake-targets">targets</a>,
<a href="#cmake-tool_prefix">tool_prefix</a>, <a href="#cmake-tools_deps">tools_deps</a>, <a href="#cmake-working_directory">working_directory</a>)
<a href="#cmake-lib_name">lib_name</a>, <a href="#cmake-lib_source">lib_source</a>, <a href="#cmake-linkopts">linkopts</a>, <a href="#cmake-out_bin_dir">out_bin_dir</a>, <a href="#cmake-out_binaries">out_binaries</a>, <a href="#cmake-out_data_dirs">out_data_dirs</a>, <a href="#cmake-out_headers_only">out_headers_only</a>,
<a href="#cmake-out_include_dir">out_include_dir</a>, <a href="#cmake-out_interface_libs">out_interface_libs</a>, <a href="#cmake-out_lib_dir">out_lib_dir</a>, <a href="#cmake-out_shared_libs">out_shared_libs</a>, <a href="#cmake-out_static_libs">out_static_libs</a>,
<a href="#cmake-postfix_script">postfix_script</a>, <a href="#cmake-targets">targets</a>, <a href="#cmake-tool_prefix">tool_prefix</a>, <a href="#cmake-tools_deps">tools_deps</a>, <a href="#cmake-working_directory">working_directory</a>)
</pre>
Rule for building external library with CMake.
@ -99,6 +100,7 @@ Rule for building external library with CMake.
| <a id="cmake-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="cmake-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="cmake-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="cmake-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="cmake-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="cmake-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="cmake-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
@ -140,9 +142,9 @@ configure_make(<a href="#configure_make-name">name</a>, <a href="#configure_make
<a href="#configure_make-autoconf_options">autoconf_options</a>, <a href="#configure_make-autogen">autogen</a>, <a href="#configure_make-autogen_command">autogen_command</a>, <a href="#configure_make-autogen_options">autogen_options</a>, <a href="#configure_make-autoreconf">autoreconf</a>,
<a href="#configure_make-autoreconf_options">autoreconf_options</a>, <a href="#configure_make-build_data">build_data</a>, <a href="#configure_make-configure_command">configure_command</a>, <a href="#configure_make-configure_in_place">configure_in_place</a>,
<a href="#configure_make-configure_options">configure_options</a>, <a href="#configure_make-configure_prefix">configure_prefix</a>, <a href="#configure_make-data">data</a>, <a href="#configure_make-defines">defines</a>, <a href="#configure_make-deps">deps</a>, <a href="#configure_make-env">env</a>, <a href="#configure_make-install_prefix">install_prefix</a>,
<a href="#configure_make-lib_name">lib_name</a>, <a href="#configure_make-lib_source">lib_source</a>, <a href="#configure_make-linkopts">linkopts</a>, <a href="#configure_make-out_bin_dir">out_bin_dir</a>, <a href="#configure_make-out_binaries">out_binaries</a>, <a href="#configure_make-out_headers_only">out_headers_only</a>,
<a href="#configure_make-out_include_dir">out_include_dir</a>, <a href="#configure_make-out_interface_libs">out_interface_libs</a>, <a href="#configure_make-out_lib_dir">out_lib_dir</a>, <a href="#configure_make-out_shared_libs">out_shared_libs</a>, <a href="#configure_make-out_static_libs">out_static_libs</a>,
<a href="#configure_make-postfix_script">postfix_script</a>, <a href="#configure_make-targets">targets</a>, <a href="#configure_make-tool_prefix">tool_prefix</a>, <a href="#configure_make-tools_deps">tools_deps</a>)
<a href="#configure_make-lib_name">lib_name</a>, <a href="#configure_make-lib_source">lib_source</a>, <a href="#configure_make-linkopts">linkopts</a>, <a href="#configure_make-out_bin_dir">out_bin_dir</a>, <a href="#configure_make-out_binaries">out_binaries</a>, <a href="#configure_make-out_data_dirs">out_data_dirs</a>,
<a href="#configure_make-out_headers_only">out_headers_only</a>, <a href="#configure_make-out_include_dir">out_include_dir</a>, <a href="#configure_make-out_interface_libs">out_interface_libs</a>, <a href="#configure_make-out_lib_dir">out_lib_dir</a>, <a href="#configure_make-out_shared_libs">out_shared_libs</a>,
<a href="#configure_make-out_static_libs">out_static_libs</a>, <a href="#configure_make-postfix_script">postfix_script</a>, <a href="#configure_make-targets">targets</a>, <a href="#configure_make-tool_prefix">tool_prefix</a>, <a href="#configure_make-tools_deps">tools_deps</a>)
</pre>
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.
@ -179,6 +181,7 @@ Rule for building external libraries with configure-make pattern. Some 'configur
| <a id="configure_make-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="configure_make-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="configure_make-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="configure_make-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="configure_make-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="configure_make-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="configure_make-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
@ -197,7 +200,7 @@ Rule for building external libraries with configure-make pattern. Some 'configur
<pre>
make(<a href="#make-name">name</a>, <a href="#make-additional_inputs">additional_inputs</a>, <a href="#make-additional_tools">additional_tools</a>, <a href="#make-alwayslink">alwayslink</a>, <a href="#make-args">args</a>, <a href="#make-build_data">build_data</a>, <a href="#make-data">data</a>, <a href="#make-defines">defines</a>, <a href="#make-deps">deps</a>,
<a href="#make-env">env</a>, <a href="#make-lib_name">lib_name</a>, <a href="#make-lib_source">lib_source</a>, <a href="#make-linkopts">linkopts</a>, <a href="#make-out_bin_dir">out_bin_dir</a>, <a href="#make-out_binaries">out_binaries</a>, <a href="#make-out_headers_only">out_headers_only</a>,
<a href="#make-env">env</a>, <a href="#make-lib_name">lib_name</a>, <a href="#make-lib_source">lib_source</a>, <a href="#make-linkopts">linkopts</a>, <a href="#make-out_bin_dir">out_bin_dir</a>, <a href="#make-out_binaries">out_binaries</a>, <a href="#make-out_data_dirs">out_data_dirs</a>, <a href="#make-out_headers_only">out_headers_only</a>,
<a href="#make-out_include_dir">out_include_dir</a>, <a href="#make-out_interface_libs">out_interface_libs</a>, <a href="#make-out_lib_dir">out_lib_dir</a>, <a href="#make-out_shared_libs">out_shared_libs</a>, <a href="#make-out_static_libs">out_static_libs</a>,
<a href="#make-postfix_script">postfix_script</a>, <a href="#make-targets">targets</a>, <a href="#make-tool_prefix">tool_prefix</a>, <a href="#make-tools_deps">tools_deps</a>)
</pre>
@ -224,6 +227,7 @@ Rule for building external libraries with GNU Make. GNU Make commands (make and
| <a id="make-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="make-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="make-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="make-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="make-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="make-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="make-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |
@ -281,9 +285,9 @@ Rule for defining the toolchain data of the native tools (cmake, ninja), to be u
<pre>
ninja(<a href="#ninja-name">name</a>, <a href="#ninja-additional_inputs">additional_inputs</a>, <a href="#ninja-additional_tools">additional_tools</a>, <a href="#ninja-alwayslink">alwayslink</a>, <a href="#ninja-args">args</a>, <a href="#ninja-build_data">build_data</a>, <a href="#ninja-data">data</a>, <a href="#ninja-defines">defines</a>, <a href="#ninja-deps">deps</a>,
<a href="#ninja-directory">directory</a>, <a href="#ninja-env">env</a>, <a href="#ninja-lib_name">lib_name</a>, <a href="#ninja-lib_source">lib_source</a>, <a href="#ninja-linkopts">linkopts</a>, <a href="#ninja-out_bin_dir">out_bin_dir</a>, <a href="#ninja-out_binaries">out_binaries</a>, <a href="#ninja-out_headers_only">out_headers_only</a>,
<a href="#ninja-out_include_dir">out_include_dir</a>, <a href="#ninja-out_interface_libs">out_interface_libs</a>, <a href="#ninja-out_lib_dir">out_lib_dir</a>, <a href="#ninja-out_shared_libs">out_shared_libs</a>, <a href="#ninja-out_static_libs">out_static_libs</a>,
<a href="#ninja-postfix_script">postfix_script</a>, <a href="#ninja-targets">targets</a>, <a href="#ninja-tool_prefix">tool_prefix</a>, <a href="#ninja-tools_deps">tools_deps</a>)
<a href="#ninja-directory">directory</a>, <a href="#ninja-env">env</a>, <a href="#ninja-lib_name">lib_name</a>, <a href="#ninja-lib_source">lib_source</a>, <a href="#ninja-linkopts">linkopts</a>, <a href="#ninja-out_bin_dir">out_bin_dir</a>, <a href="#ninja-out_binaries">out_binaries</a>, <a href="#ninja-out_data_dirs">out_data_dirs</a>,
<a href="#ninja-out_headers_only">out_headers_only</a>, <a href="#ninja-out_include_dir">out_include_dir</a>, <a href="#ninja-out_interface_libs">out_interface_libs</a>, <a href="#ninja-out_lib_dir">out_lib_dir</a>, <a href="#ninja-out_shared_libs">out_shared_libs</a>,
<a href="#ninja-out_static_libs">out_static_libs</a>, <a href="#ninja-postfix_script">postfix_script</a>, <a href="#ninja-targets">targets</a>, <a href="#ninja-tool_prefix">tool_prefix</a>, <a href="#ninja-tools_deps">tools_deps</a>)
</pre>
Rule for building external libraries with [Ninja](https://ninja-build.org/).
@ -309,6 +313,7 @@ Rule for building external libraries with [Ninja](https://ninja-build.org/).
| <a id="ninja-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="ninja-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="ninja-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="ninja-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="ninja-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="ninja-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="ninja-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |

View File

@ -8,7 +8,7 @@ A rule for building projects using the [GNU Make](https://www.gnu.org/software/m
<pre>
make(<a href="#make-name">name</a>, <a href="#make-additional_inputs">additional_inputs</a>, <a href="#make-additional_tools">additional_tools</a>, <a href="#make-alwayslink">alwayslink</a>, <a href="#make-args">args</a>, <a href="#make-build_data">build_data</a>, <a href="#make-data">data</a>, <a href="#make-defines">defines</a>, <a href="#make-deps">deps</a>,
<a href="#make-env">env</a>, <a href="#make-lib_name">lib_name</a>, <a href="#make-lib_source">lib_source</a>, <a href="#make-linkopts">linkopts</a>, <a href="#make-out_bin_dir">out_bin_dir</a>, <a href="#make-out_binaries">out_binaries</a>, <a href="#make-out_headers_only">out_headers_only</a>,
<a href="#make-env">env</a>, <a href="#make-lib_name">lib_name</a>, <a href="#make-lib_source">lib_source</a>, <a href="#make-linkopts">linkopts</a>, <a href="#make-out_bin_dir">out_bin_dir</a>, <a href="#make-out_binaries">out_binaries</a>, <a href="#make-out_data_dirs">out_data_dirs</a>, <a href="#make-out_headers_only">out_headers_only</a>,
<a href="#make-out_include_dir">out_include_dir</a>, <a href="#make-out_interface_libs">out_interface_libs</a>, <a href="#make-out_lib_dir">out_lib_dir</a>, <a href="#make-out_shared_libs">out_shared_libs</a>, <a href="#make-out_static_libs">out_static_libs</a>,
<a href="#make-postfix_script">postfix_script</a>, <a href="#make-targets">targets</a>, <a href="#make-tool_prefix">tool_prefix</a>, <a href="#make-tools_deps">tools_deps</a>)
</pre>
@ -35,6 +35,7 @@ Rule for building external libraries with GNU Make. GNU Make commands (make and
| <a id="make-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="make-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="make-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="make-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="make-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="make-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="make-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |

View File

@ -8,9 +8,9 @@ A rule for building projects using the [Ninja](https://ninja-build.org/) build t
<pre>
ninja(<a href="#ninja-name">name</a>, <a href="#ninja-additional_inputs">additional_inputs</a>, <a href="#ninja-additional_tools">additional_tools</a>, <a href="#ninja-alwayslink">alwayslink</a>, <a href="#ninja-args">args</a>, <a href="#ninja-build_data">build_data</a>, <a href="#ninja-data">data</a>, <a href="#ninja-defines">defines</a>, <a href="#ninja-deps">deps</a>,
<a href="#ninja-directory">directory</a>, <a href="#ninja-env">env</a>, <a href="#ninja-lib_name">lib_name</a>, <a href="#ninja-lib_source">lib_source</a>, <a href="#ninja-linkopts">linkopts</a>, <a href="#ninja-out_bin_dir">out_bin_dir</a>, <a href="#ninja-out_binaries">out_binaries</a>, <a href="#ninja-out_headers_only">out_headers_only</a>,
<a href="#ninja-out_include_dir">out_include_dir</a>, <a href="#ninja-out_interface_libs">out_interface_libs</a>, <a href="#ninja-out_lib_dir">out_lib_dir</a>, <a href="#ninja-out_shared_libs">out_shared_libs</a>, <a href="#ninja-out_static_libs">out_static_libs</a>,
<a href="#ninja-postfix_script">postfix_script</a>, <a href="#ninja-targets">targets</a>, <a href="#ninja-tool_prefix">tool_prefix</a>, <a href="#ninja-tools_deps">tools_deps</a>)
<a href="#ninja-directory">directory</a>, <a href="#ninja-env">env</a>, <a href="#ninja-lib_name">lib_name</a>, <a href="#ninja-lib_source">lib_source</a>, <a href="#ninja-linkopts">linkopts</a>, <a href="#ninja-out_bin_dir">out_bin_dir</a>, <a href="#ninja-out_binaries">out_binaries</a>, <a href="#ninja-out_data_dirs">out_data_dirs</a>,
<a href="#ninja-out_headers_only">out_headers_only</a>, <a href="#ninja-out_include_dir">out_include_dir</a>, <a href="#ninja-out_interface_libs">out_interface_libs</a>, <a href="#ninja-out_lib_dir">out_lib_dir</a>, <a href="#ninja-out_shared_libs">out_shared_libs</a>,
<a href="#ninja-out_static_libs">out_static_libs</a>, <a href="#ninja-postfix_script">postfix_script</a>, <a href="#ninja-targets">targets</a>, <a href="#ninja-tool_prefix">tool_prefix</a>, <a href="#ninja-tools_deps">tools_deps</a>)
</pre>
Rule for building external libraries with [Ninja](https://ninja-build.org/).
@ -36,6 +36,7 @@ Rule for building external libraries with [Ninja](https://ninja-build.org/).
| <a id="ninja-linkopts"></a>linkopts | Optional link options to be passed up to the dependencies of this library | List of strings | optional | [] |
| <a id="ninja-out_bin_dir"></a>out_bin_dir | Optional name of the output subdirectory with the binary files, defaults to 'bin'. | String | optional | "bin" |
| <a id="ninja-out_binaries"></a>out_binaries | Optional names of the resulting binaries. | List of strings | optional | [] |
| <a id="ninja-out_data_dirs"></a>out_data_dirs | Optional names of additional directories created by the build that should be declared as bazel action outputs | List of strings | optional | [] |
| <a id="ninja-out_headers_only"></a>out_headers_only | Flag variable to indicate that the library produces only headers | Boolean | optional | False |
| <a id="ninja-out_include_dir"></a>out_include_dir | Optional name of the output subdirectory with the header files, defaults to 'include'. | String | optional | "include" |
| <a id="ninja-out_interface_libs"></a>out_interface_libs | Optional names of the resulting interface libraries. | List of strings | optional | [] |

View File

@ -17,6 +17,7 @@ test_suite(
"//libssh2:libssh2_build_test",
"//openssl:openssl_build_test",
"//pcre:pcre_build_test",
"//python:python_tests",
"//sqlite:sqlite_build_test",
"//subversion:subversion_build_test",
],
@ -41,6 +42,7 @@ test_suite(
"//libssh2:libssh2_build_test",
"//openssl:openssl_build_test",
"//pcre:pcre_build_test",
"//python:python_tests",
# Missing a new enough automake to build
#"//sqlite:sqlite_build_test",
#"//subversion:subversion_build_test",
@ -64,6 +66,7 @@ test_suite(
"//libssh2:libssh2_build_test",
"//openssl:openssl_build_test",
"//pcre:pcre_build_test",
"//python:python_tests",
"//sqlite:sqlite_build_test",
"//subversion:subversion_build_test",
],

57
examples/third_party/python/BUILD.bazel vendored Normal file
View File

@ -0,0 +1,57 @@
load("@rules_python//python:defs.bzl", "py_runtime", "py_runtime_pair", "py_test")
exports_files(
[
"BUILD.python2.bazel",
"BUILD.python3.bazel",
],
visibility = ["//visibility:public"],
)
py_runtime(
name = "py2_runtime",
files = ["@python2"],
interpreter = "@python2//:python2_bin",
python_version = "PY2",
)
py_runtime(
name = "py3_runtime",
files = ["@python3"],
interpreter = "@python3//:python3_bin",
python_version = "PY3",
)
py_runtime_pair(
name = "py_runtime_pair",
py2_runtime = ":py2_runtime",
py3_runtime = ":py3_runtime",
)
toolchain(
name = "python_toolchain",
toolchain = ":py_runtime_pair",
toolchain_type = "@rules_python//python:toolchain_type",
)
py_test(
name = "python2_test",
srcs = ["python2_test.py"],
python_version = "PY2",
visibility = ["//:__pkg__"],
)
py_test(
name = "python3_test",
srcs = ["python3_test.py"],
python_version = "PY3",
visibility = ["//:__pkg__"],
)
test_suite(
name = "python_tests",
tests = [
":python2_test",
":python3_test",
],
)

View File

@ -0,0 +1,47 @@
load("@rules_foreign_cc//foreign_cc:defs.bzl", "configure_make")
package(default_visibility = ["//visibility:public"])
filegroup(
name = "all_srcs",
srcs = glob(["**"]),
)
configure_make(
name = "python2",
build_data = select({
"@platforms//os:macos": ["@subversion"],
"//conditions:default": [],
}),
configure_options = [
"CFLAGS='-Dredacted=\"redacted\"'",
"--with-openssl=$EXT_BUILD_DEPS/openssl",
"--with-zlib=$EXT_BUILD_DEPS/zlib",
"--enable-optimizations",
],
env = select({
"@platforms//os:macos": {"AR": ""},
"//conditions:default": {},
}),
features = select({
"@platforms//os:macos": ["-headerpad"],
"//conditions:default": {},
}),
# rules_foreign_cc defaults the install_prefix to "python". This conflicts with the "python" executable that is generated.
install_prefix = "py_install",
lib_source = ":all_srcs",
out_binaries = [
"python2.7",
],
out_data_dirs = ["lib"],
deps = [
"@openssl",
"@zlib",
],
)
filegroup(
name = "python2_bin",
srcs = [":python2"],
output_group = "python2.7",
)

View File

@ -0,0 +1,43 @@
load("@rules_foreign_cc//foreign_cc:defs.bzl", "configure_make")
package(default_visibility = ["//visibility:public"])
filegroup(
name = "all_srcs",
srcs = glob(["**"]),
)
configure_make(
name = "python3",
configure_options = [
"CFLAGS='-Dredacted=\"redacted\"'",
"--with-openssl=$EXT_BUILD_DEPS/openssl",
"--with-zlib=$EXT_BUILD_DEPS/zlib",
"--enable-optimizations",
],
env = select({
"@platforms//os:macos": {"AR": ""},
"//conditions:default": {},
}),
features = select({
"@platforms//os:macos": ["-headerpad"],
"//conditions:default": {},
}),
# rules_foreign_cc defaults the install_prefix to "python". This conflicts with the "python" executable that is generated.
install_prefix = "py_install",
lib_source = ":all_srcs",
out_binaries = [
"python3.9",
],
out_data_dirs = ["lib"],
deps = [
"@openssl",
"@zlib",
],
)
filegroup(
name = "python3_bin",
srcs = [":python3"],
output_group = "python3.9",
)

View File

@ -0,0 +1,8 @@
import sys
import platform
if __name__ == "__main__":
assert('python2_test.runfiles/python2/python2/bin/' in sys.executable)
assert(platform.python_version() == "2.7.9")

View File

@ -0,0 +1,8 @@
import sys
import platform
if __name__ == "__main__":
assert('python3_test.runfiles/python3/python3/bin/' in sys.executable)
assert(platform.python_version() == "3.9.3")

View File

@ -0,0 +1,39 @@
"""A module defining the third party dependency Python"""
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
# buildifier: disable=unnamed-macro
def python_repositories():
maybe(
http_archive,
name = "python2",
build_file = Label("//python:BUILD.python2.bazel"),
strip_prefix = "Python-2.7.9",
urls = [
"https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz",
],
sha256 = "c8bba33e66ac3201dabdc556f0ea7cfe6ac11946ec32d357c4c6f9b018c12c5b",
)
maybe(
http_archive,
name = "python3",
build_file = Label("//python:BUILD.python3.bazel"),
strip_prefix = "Python-3.9.3",
urls = [
"https://www.python.org/ftp/python/3.9.3/Python-3.9.3.tgz",
],
sha256 = "3afeb61a45b5a2e6f1c0f621bd8cf925a4ff406099fdb3d8c97b993a5f43d048",
)
maybe(
http_archive,
name = "rules_python",
sha256 = "778197e26c5fbeb07ac2a2c5ae405b30f6cb7ad1f5510ea6fdac03bded96cc6f",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_python/releases/download/0.2.0/rules_python-0.2.0.tar.gz",
"https://github.com/bazelbuild/rules_python/releases/download/0.2.0/rules_python-0.2.0.tar.gz",
],
)
native.register_toolchains("@rules_foreign_cc_examples_third_party//python:python_toolchain")

View File

@ -16,6 +16,7 @@ load("//libpng:libpng_repositories.bzl", "libpng_repositories")
load("//libssh2:libssh2_repositories.bzl", "libssh2_repositories")
load("//openssl:openssl_repositories.bzl", "openssl_repositories")
load("//pcre:pcre_repositories.bzl", "pcre_repositories")
load("//python:python_repositories.bzl", "python_repositories")
load("//sqlite:sqlite_repositories.bzl", "sqlite_repositories")
load("//subversion:subversion_repositories.bzl", "subversion_repositories")
load("//zlib:zlib_repositories.bzl", "zlib_repositories")
@ -37,6 +38,7 @@ def repositories():
libssh2_repositories()
openssl_repositories()
pcre_repositories()
python_repositories()
sqlite_repositories()
subversion_repositories()
zlib_repositories()

View File

@ -132,6 +132,10 @@ CC_EXTERNAL_RULE_ATTRIBUTES = {
doc = "Optional names of the resulting binaries.",
mandatory = False,
),
"out_data_dirs": attr.string_list(
doc = "Optional names of additional directories created by the build that should be declared as bazel action outputs",
mandatory = False,
),
"out_headers_only": attr.bool(
doc = "Flag variable to indicate that the library produces only headers",
mandatory = False,
@ -674,6 +678,7 @@ def _define_outputs(ctx, attrs, lib_name):
attr_binaries_libs = attrs.out_binaries
attr_headers_only = attrs.out_headers_only
attr_interface_libs = attrs.out_interface_libs
attr_out_data_dirs = attrs.out_data_dirs
attr_shared_libs = attrs.out_shared_libs
attr_static_libs = attrs.out_static_libs
@ -688,6 +693,10 @@ def _define_outputs(ctx, attrs, lib_name):
out_include_dir = ctx.actions.declare_directory(lib_name + "/" + attrs.out_include_dir)
out_data_dirs = []
for dir in attr_out_data_dirs:
out_data_dirs.append(ctx.actions.declare_directory(lib_name + "/" + dir.lstrip("/")))
out_binary_files = _declare_out(ctx, lib_name, attrs.out_bin_dir, attr_binaries_libs)
libraries = LibrariesToLinkInfo(
@ -696,7 +705,7 @@ def _define_outputs(ctx, attrs, lib_name):
interface_libraries = _declare_out(ctx, lib_name, attrs.out_lib_dir, attr_interface_libs),
)
declared_outputs = [out_include_dir] + out_binary_files
declared_outputs = [out_include_dir] + out_data_dirs + out_binary_files
declared_outputs += libraries.static_libraries
declared_outputs += libraries.shared_libraries + libraries.interface_libraries