2
0
Fork 0
mirror of https://github.com/bazel-contrib/rules_foreign_cc synced 2024-11-30 16:42:07 +00:00
Commit graph

174 commits

Author SHA1 Message Date
James Sharpe c4d307b707
Use bazel_skylib 1.2.1 (#920) 2022-05-27 19:17:30 +00:00
James Sharpe 0cdd7132b5
Update cmake versions (#918) 2022-05-27 18:16:41 +00:00
James Sharpe f53188cb8d
Ninja 1.11.0 (#919) 2022-05-27 16:55:59 +00:00
graywolf-at-work 5d391cfe9d
Make tests pass on busybox (#912)
-t option to ln is not defined under POSIX and (at least) busybox does
not implement it. Rewrite the code to use only POSIX options to ln.
2022-05-26 22:24:17 +00:00
Keith Smiley f9458a5e9a
Fix ninja bootstrap on macOS 12.3+ (#900) 2022-04-20 23:24:05 +01:00
Thomas cac46994c9
Pass '-undefined error' non sysroot ldflag on macOS (#894) 2022-04-19 16:54:23 +01:00
Keith Smiley e0590b50e4
Set CMAKE_OSX_ARCHITECTURES to target architecture (#891) 2022-04-16 17:19:01 +01:00
James Sharpe 4aa243d4db
Fixups to use of Labels to support bzlmod (#872) 2022-04-07 16:44:38 +01:00
James Sharpe 9fc3411bb5
Add current_*_toolchain rules to allow passing current toolchain inst… (#843)
Co-authored-by: UebelAndre <github@uebelandre.com>
2022-03-14 14:06:22 +00:00
James Sharpe f54068e889
Add 3.22.2 and 3.21.5 (#875) 2022-02-20 17:06:56 -08:00
jheaff1 33bce66655
Absolutise path to cmake crosstool file (#870) 2022-02-09 23:15:54 +00:00
Fabian Meumertzheim 26eadbcd0d
Replace escape_locations with escape_locations_and_make_variables everywhere (#861)
Co-authored-by: James Sharpe <james.sharpe@zenotech.com>
2022-02-09 22:34:12 +00:00
Fabian Meumertzheim f0047ba2f5
Do not set user defined env variables twice for (c)make (#860) 2022-02-08 23:05:33 +00:00
Fabian Meumertzheim 50ee9979e6
Remove arbitrary limits in Starlark "while" loops (#862) 2022-01-21 21:05:18 +00:00
James Sharpe e24d9cecfe
Allow all source files to be modified in configure_make when using configure_in_place = True (#856) 2022-01-10 09:48:37 +00:00
James Sharpe 2f9965077f
bzlmod fix (#855) 2022-01-07 09:35:19 +00:00
James Sharpe ae4ff42901
More quoting fixes for handling paths with spaces (#850) 2022-01-02 16:42:56 +00:00
James Sharpe 5f37b4245b
CMake 3.22.1 (#841) 2022-01-01 21:46:02 +00:00
James Sharpe 3c14ef4a73
Initial bzlmod support (#839) 2022-01-01 21:07:29 +00:00
James Sharpe 818cdb197e
Fix quoting to support spaces in paths with files that need replacements (#842) 2022-01-01 20:48:37 +00:00
James Sharpe e3a12c7d0f
Add runfiles to build_tools (#844) 2021-12-19 21:23:30 +00:00
James Sharpe 029314b890
Fix typo in comment (#840) 2021-12-18 19:43:32 +00:00
James Sharpe 26ccca83b8
Add toolchain types for autotools tools (#816) 2021-12-17 23:27:10 +00:00
Eric Astor ebfeaa08f8
Support propagation of includes (#826) 2021-12-04 21:29:47 +00:00
Fabian Meumertzheim 0cf751c053
Bootstrap make reproducibly (#817)
* Make cc_toolchain_utils.bzl more reusable

By using getattr, the helper functions in this file can be reused in
rules that do not define all of the framework attributes, e.g. bootstrap
rules.

* Bootstrap make reproducibly on Linux and macOS

Uses the Bazel C/C++ toolchain to bootstrap make and ensure that the
resulting binary contains no absolute and thus non-hermetic paths.

Building make reproducibly helps with remote caching and removes the
dependency on a C compiler installed on the host.
2021-11-30 15:58:53 +00:00
Yesudeep Mangalapilly a2f1e5d8c3
Adds toolchain for freebsd. (#794)
* Adds toolchain for freebsd.

* Address buildifier lint warnings.

* Use /usr/bin/env bash

* Leave the Linux-specific shebang alone.

* Adds note about Bazel CI issue requesting for FreeBSD support and experimental status.

* Fix typo.

* Clean up trailing whitespace.

* Updates bazel-skylib version for tests to pass on FreeBSD.

* Update foreign_cc/repositories.bzl

Co-authored-by: UebelAndre <github@uebelandre.com>
2021-11-29 10:54:06 +00:00
Fabian Meumertzheim f61ce5d10b
Pass toolchain and user env variables to make invocation (#777)
* Pass toolchain and user env variables to make invocation

* Rename configure --> make

* Add integration test coverage for make flag passing

This requires making the make_simple Makefile more realistic by

* using CXX and forwarding it to the wrapper;
* using CXXFLAGS instead of CXX_FLAGS and not overwriting its contents.
2021-11-27 07:52:54 -08:00
Fabian Meumertzheim 1a262c9411
Let make build in BUILD_TMPDIR (#818)
configure_make already used BUILD_TMPDIR whereas make did not.
2021-11-24 23:24:29 +00:00
jheaff1 7205619704
Ensure Windows paths used by CMake contain forward slashes only (#807) 2021-11-22 19:53:28 +00:00
James Sharpe 7baefc1a8c
Autotools examples (#754)
* Build files for autotools tools
* m4 1.4.19
2021-11-19 00:56:08 +00:00
James Sharpe 1327fa3d4c
CMake 3.21.3, 3.21.4 and 3.22.0 support (#815) 2021-11-19 00:27:40 +00:00
James Sharpe eaf1092368
Explicitly turn off guile support in built version of GNU make (#814) 2021-11-18 23:30:30 +00:00
Daniel Wagner-Hall ec9c9a4612
Expand make variables in env (#788) 2021-10-19 07:51:53 -07:00
Fabian Meumertzheim d93bd96dc7
Add flags from copts and linkopts attributes (#796) 2021-10-05 07:07:10 -07:00
UebelAndre a7105dafb0
Updated rules_cc and bazel_skylib versions (#795) 2021-09-30 23:34:16 +00:00
Keith Smiley 6c0c2af3d5
Improve failed exports logic (#789) 2021-09-22 00:35:40 +00:00
Fabian Meumertzheim fde2581fab
Resolve symlinks among output binaries (#781)
Certain (C)Make projects (such as [AFL++](https://github.com/AFLplusplus/AFLplusplus)) emit binaries that are symlinks to other emitted binaries. When built with `rules_foreign_cc`, this can lead to non-deterministic dangling symlink errors since Bazel visits the outputs in an unspecified order. This is fixed by resolving symlinks among the emitted binaries, just like it is already done for libraries.
2021-09-06 15:01:16 +01:00
James Sharpe 8f6fc67384
Add cmake version 3.21.2 (#778) 2021-08-28 21:16:01 +01:00
Keith Smiley da8952e27c
Fix building for iOS (#767) 2021-08-21 08:55:10 +01:00
Keith Smiley 4ee863c1fc
Fix building without sandboxing (#769)
Since 466c32c70f any changes you made
while testing rules_foreign_cc, or changes to those rules, would not
invalidate the CMakeCache.txt and lead to build issues. It wasn't the
case before that because new temp dirs were used each time.
2021-08-20 09:33:10 +01:00
UebelAndre be72696944
Added support for Visual Studio 2022 (#758) 2021-08-18 13:07:49 +00:00
David Marcin 3f61e246a3
Pass all tags to execution_requirements (#765) 2021-08-18 10:21:17 +01:00
UebelAndre 9bfb4d7da6
Added CMake 3.21.1 (#757) 2021-08-17 13:49:18 +00:00
jheaff1 f01fd353ee
Build apr for MSVC on Windows (#743) 2021-08-05 19:40:20 +01:00
jheaff1 3b72ab3468
Re-add setting of PREFIX variable in make invocation (#751) 2021-08-03 06:11:07 -07:00
UebelAndre 86979c9ece
Fix missing parameter (#746) 2021-07-30 09:09:06 +01:00
jheaff1 1cc0f074f4
Remove "GNU" prefix to Make (#744) 2021-07-29 06:13:26 -07:00
James Sharpe bad4ab0c3d
Fix quoting for cmake (#703) 2021-07-28 18:12:53 +01:00
jheaff1 5163c3cec8
Build OpenSSL using MSVC toolchain on Windows (#729)
* build OpenSSL using MSVC toolchain on Windows

* Display lib name in progress message

Before this commit, when building OpenSSL using MSVC, the progress
message would display "Building openssl_msvc_".

After this commit, the progess message would display
"Building openssl".

* Add test to verify linkage with OpenSSL libs

* Add test to verify linkage with Curl libs

Note that linker errors occur in applications that link with libssl
and libcrypto if libcrypto comes before libssl on the linker
command-line. Swapping the order of libcrypto and libssl in
BUILD.openssl.bazel resolved the issue.
2021-07-28 08:13:03 -07:00
jheaff1 2e61d9588a
Add <rule>_variant macros (#734)
The macros utilise bazel "transitions" to set the `make` toolchain used
in the configure_make(), cmake() or make() rules to
a given make variant toolchain, e.g. preinstalled_nmake.

Note that the msvc constraint was removed from the
`exec_compatible_with` attribute of `preinstalled_nmake_toolchain` as
the condition is not actually met even when building with msvc. See
https://github.com/bazelbuild/bazel/issues/7730.

This will be tested in PR#729
2021-07-28 15:30:04 +01:00
jheaff1 b51f25ee62
Prepend user-specified PATH to existing PATH (#733)
If a user specifies a PATH value as part of an `env` attribute, the
value will be prepended to the existing PATH.

An example requirement for this change is that the MSVC build of
OpenSSL requires that the Netwide Assembler (NASM) must be on the
PATH.
2021-07-22 20:30:25 +01:00
jheaff1 c7330faee5
Wrap tool paths that contain whitespaces in quotes (#732)
This change is required when using the MSVC toolchain on Windows,
as paths for tools such as the compiler contain whitespaces (e.g.
C:\Program Files\...)

Co-authored-by: UebelAndre <github@uebelandre.com>
2021-07-20 16:44:33 +00:00
jheaff1 919d65bb06
Convert MSVC flags by replacing slashes with dashes (#731)
* Convert MSVC flags by replacing slashes with dashes

This overcomes bugs in MSYS2 where leading slashes are converted to
paths, e.g. "/nologo" is converted to "C:\msys64\nologo".

This commit would modify the flag to become "-nologo". MSVC supports
both slashes and dashes for flags.

* Update foreign_cc/private/cc_toolchain_util.bzl

Co-authored-by: UebelAndre <github@uebelandre.com>
2021-07-20 16:42:29 +00:00
UebelAndre 41f24f3a2f
Added consistent use of expand_locations to all rules. (#722)
* Added consistent use of `expand_locations` to all rules.

* Use variable expansion syntax from the framework.
2021-07-19 19:44:21 +00:00
UebelAndre f9885a8066
Updated common deps attribute to require CcInfo in targets (#723) 2021-07-19 10:59:01 -07:00
Alexander Turkin 721fd85881
added cmake 3.21.0 (#726) 2021-07-19 10:04:44 +01:00
UebelAndre c95d769e30
Added a make_toolchain, nmake for msvc windows platforms (#724) 2021-07-18 20:46:46 +01:00
UebelAndre 32e222aeff
Enable more examples tests on windows (#718)
* Enable examples tests on windows

* Fixed windows absolute paths being treated as relative.

* Escape windows backslashes for sed replacement

* Improve `//cmake_hello_world_lib/static:libhello` example
2021-07-14 09:37:35 -07:00
jheaff1 93d7c272cc
Build make windows (#716)
* Refactor _env_prelude method to be public (589)

In an upcoming commit, the method will be used to set the PATH,
INCLUDE and LIB environment variables in Windows when building GNU
Make from source

* Build make from source on Windows (#589)

The built_tools_framework.bzl file was modified so that the PATH,
INCLUDE and LIB environment variables are set from the C++ toolchain,
e.g. MSVC.

The PATH environment variable is prepended with the path to the
toolchain's linker, otherwise the MSYS2 linker would be used instead
of MSVC (as they are both named link.exe).
2021-07-12 07:17:18 -07:00
James Sharpe bb2f0ab0aa
Use configure_make to build cmake. (#588)
* Add copts to framework

* Use configure_make to build cmake. Closes #584
2021-07-06 22:58:00 +01:00
James Sharpe c41020e465
Always set use_default_shell_env=True so that action_env is propagated. (#701) 2021-06-28 20:13:17 +00:00
UebelAndre 6f03311e89
Added cmake 3.20.5 and all other final releases of 3.X (#698)
* Added cmake 3.20.5 and all other final releases of 3.X

* Updated built-toolchains
2021-06-28 15:22:06 +00:00
jheaff1 99ea7e75c2
Set progress message when building targets (#697) (#697) 2021-06-23 08:32:21 -07:00
UebelAndre a7f1c9e604
Docs are now auto-generated using mdbook (#692) 2021-06-22 13:10:31 -07:00
jheaff1 5663d884a2
Provide out_data_dirs attribute (#419) (#622)
This change facilitates hermetic python toolchains, as demonstrated by
the test added in this commit.
2021-06-22 08:51:29 -07:00
UebelAndre 96dc580194
Updated macos copy_dir_contents_to_dir to behave more like other platforms (#687) 2021-06-22 16:14:38 +01:00
UebelAndre 3dbe409720
Removed legacy *env_vars attributes from cmake and configure_make rule (#675)
* Removed legacy `*env_vars` attributes from `cmake` and `configure_make` rule. Use `env` instead.

* Updated examples

* Improved variable expansion

* Fixed missing `build_data` attribute for `configure_make`

* Fix environment variable quotes

* Attempt to address quoted environment variables.

* Updated documentation
2021-06-21 08:24:34 -07:00
Attila Oláh fccd4ddaeb
Fix tool_prefix for CMake (#686)
* Fix tool_prefix for CMake.

Set the prefix before the first CMake invocation (where all the extra
flags are passed), and don't set the prefix for the `--build` and
`--install` invocations of CMake.

Fixes #685.

* Update test/cmake_text_tests.bzl

Co-authored-by: UebelAndre <github@uebelandre.com>
2021-06-16 21:55:02 +00:00
UebelAndre f11977b484
Added documentation for providers (#681) 2021-06-16 13:58:55 +00:00
UebelAndre 9932c7dbc2
Removed make_commands attribute and fixed configure_make (#671) 2021-06-16 13:09:15 +00:00
Alexander Turkin 23907e5972
update cmake to 3.20.4 (#680)
* update cmake to 3.20.4

* update cmake to 3.20.4

* update cmake to 3.20.4
2021-06-16 12:46:23 +01:00
UebelAndre 497d929ec5
Added support for replacing sandbox paths in build artifacts (#650)
* Added support for replacing sandbox paths in build artifacts

* Added examples
2021-06-15 15:10:08 -07:00
UebelAndre 3b3960267c
Added tool_prefix attribute (#676)
* Added `build_data` attribute and deprecated `additional_inputs`, `additional_tools`, and `tool_deps`.

* Added `tool_prefix` and `configure_prefix` attributes

* Updated examples

* Fixed typo
2021-06-14 16:59:49 +00:00
UebelAndre a669422fa5
Fixed docs (#674) 2021-06-13 11:21:29 -07:00
thekyz eb72705d3d
set write permission on boost_build for INSTALL_DIR (#653)
Co-authored-by: James Sharpe <james.sharpe@zenotech.com>
2021-06-02 20:39:25 +01:00
UebelAndre beddf776f9
Fixed naming convention issues in common providers (#659) 2021-06-02 20:34:20 +01:00
UebelAndre f471bbfeb2
Updated documentation and removed the need to commit updated docs (#652) 2021-06-02 19:58:56 +01:00
UebelAndre 76198edc79
Fixed dangling symlinks in builds (#656) 2021-06-01 13:59:16 -07:00
UebelAndre 4e702ae6ea
Restrict use of use_default_shell_env to windows. (#647)
* Reduce the use of `use_default_shell_env` to windows

* Added helper macro for setting up the framework environment

* Apply suggestions from code review

Co-authored-by: James Sharpe <james.sharpe@zenotech.com>

* Allow action_env to take precedence over cc env

Co-authored-by: James Sharpe <james.sharpe@zenotech.com>
2021-05-18 16:40:19 +01:00
UebelAndre 66cd7dc9d4
Revert "Include libtool and .nice files when replacing sandbox paths (#644)" (#648)
This reverts commit 0859891060.
2021-05-16 22:53:04 +01:00
UebelAndre 71ebe2b3fd
Removed references to deprecated attributes (#632) 2021-05-13 14:23:02 +00:00
UebelAndre eeb267dd15
Remove the need to always generate an empty file (#646) 2021-05-12 21:16:45 +00:00
UebelAndre 0859891060
Include libtool and .nice files when replacing sandbox paths (#644) 2021-05-12 14:00:42 -07:00
UebelAndre 6b1b3655bf
Cleanup toolchain utils (#645) 2021-05-12 20:43:19 +00:00
sam-lunt f9dc5ebb0f
Build make commands from correct attribute dict (#643)
* build make commands from attrs, not ctx.attr

* do not replace all instances of make/ninja
2021-05-12 16:21:25 +01:00
James Sharpe cef5ee61ff
Set MAKE env var (#638)
* Set MAKE env var

* Update foreign_cc/private/configure_script.bzl

Co-authored-by: UebelAndre <github@uebelandre.com>

Co-authored-by: UebelAndre <andre.brisco@gmail.com>
Co-authored-by: UebelAndre <github@uebelandre.com>
2021-05-09 15:44:57 -07:00
James Sharpe b9685b507e
Update cmake to 3.20.2 (#636)
* Update cmake to 3.20.2

* Update docs
2021-05-09 09:17:54 -07:00
UebelAndre 32b0c10972
configure_make hard requires configure_in_place for certain attributes (#633) 2021-05-09 05:24:30 +00:00
UebelAndre 62fcc5f143
Fixed silent failures replacing sandbox paths in outputs (#635) 2021-05-09 06:18:25 +01:00
James Sharpe b8b88cd2d1
Add set of features to disable from the toolchain used to pass to the external build system (#631)
Co-authored-by: UebelAndre <github@uebelandre.com>
2021-05-07 08:39:57 -07:00
James Sharpe b136e6c52d
Add config for building with spawn_strategy=standalone (#603)
* Add config for building with spawn_strategy=standalone

* Always build RELEASE configuration to avoid having to select for the output due to change in artifact names for debug builds

* Fix for copy_contents_to_dir and symlink_contents_to_dir on macOS as per #512

* Update name of test files
2021-05-05 17:47:25 -07:00
UebelAndre 4eb5c5c0c2
Added a new platform_info target to the foreign_cc framework (#629)
* Added a new `platform_info` target to the foreign_cc framework

* Update foreign_cc/private/framework/platform.bzl

Co-authored-by: James Sharpe <james.sharpe@zenotech.com>

Co-authored-by: James Sharpe <james.sharpe@zenotech.com>
2021-05-05 21:35:54 +01:00
UebelAndre 923cd88ed4
Added new foreign_cc framework commands: (#628)
- enable_tracing
- disable_tracing
- script_extension
- shebang
2021-04-30 13:26:23 -07:00
UebelAndre 1bd2a8c547
Refactored framework to avoid polymorphism complexity (#612)
* Refactored framework to be less complex

* Deleted default commands (aka 'stale linux commands')

* Restored toolchain name
2021-04-30 17:03:32 +01:00
UebelAndre 98c88de5e0
Deleted unused tests/examples and performed some slight cleanup (#613) 2021-04-23 20:41:42 +01:00
UebelAndre a2ec6c0d26
Fixed provider name which was violating naming conventions (#620) 2021-04-23 17:11:13 +00:00
James Sharpe b66074cdd2
Add incompatible_use_toolchain_transition = True as per https://github.com/bazelbuild/bazel/issues/11584 (#617) 2021-04-19 08:01:50 -07:00
UebelAndre c734ca8446
Replaced uses of export with ##export_var## (#614) 2021-04-19 15:37:56 +01:00
Danny Wolf b6135adb24
Fix string escaping for cmake and configure/make (#567)
* Fix string escaping for cmake and configure/make

Use raw strings where possible to make readability slightly less maddening.

* Example usage of __TIME__

* Allow expansion of environment variables in HEREDOC for cmake crosstool

* Add compile check that __TIME__ is correctly redacted

* Ran buildifier

* Remove comment that is now invalid

Co-authored-by: James Sharpe <james.sharpe@zenotech.com>
2021-04-15 16:44:41 -07:00
UebelAndre 2d98051813
Removed all deprecated attributes (#600)
* Removed all deprecated attributes

* Updated documentation
2021-04-12 15:23:42 +00:00