diff --git a/examples/bzlmod/BUILD b/examples/bzlmod/BUILD index 9e1996d..08d13f7 100644 --- a/examples/bzlmod/BUILD +++ b/examples/bzlmod/BUILD @@ -6,7 +6,10 @@ load("@bazel_skylib//rules:build_test.bzl", "build_test") build_test( name = "arm_linux_test", - targets = ["//arm-linux:hex"], + targets = [ + "//arm-linux:hex", + "//arm-linux:atomics", + ], ) build_test( diff --git a/examples/bzlmod/arm-linux/BUILD b/examples/bzlmod/arm-linux/BUILD index 128131e..2e054ae 100644 --- a/examples/bzlmod/arm-linux/BUILD +++ b/examples/bzlmod/arm-linux/BUILD @@ -25,10 +25,13 @@ cc_library( "-mthumb", ], includes = ["includes"], - target_compatible_with = [ - "@platforms//cpu:arm", - "@platforms//os:linux", - ], + ) + +cc_library( + name = "atomics", + srcs = ["atomics.c"], + copts = ["-std=c11"], + visibility = ["//visibility:public"], ) cc_binary( diff --git a/examples/bzlmod/arm-linux/atomics.c b/examples/bzlmod/arm-linux/atomics.c new file mode 100644 index 0000000..30ff021 --- /dev/null +++ b/examples/bzlmod/arm-linux/atomics.c @@ -0,0 +1,21 @@ +#include + +// This should pick up the C-variant, not C++ one, +#include + +/** + * Minimal C11 stdatomic.h example without threads. + * + * This example is designed to test the compiler's support for the + * C11 _Atomic type specifier and the functions provided by . + */ +int main(void) { + atomic_int counter = ATOMIC_VAR_INIT(0); + atomic_fetch_add(&counter, 1); + int final_value = atomic_load(&counter); + + printf("Atomic counter initialized to 0, incremented once.\n"); + printf("Final value (read atomically): %d\n", final_value); + + return 0; +} \ No newline at end of file diff --git a/examples/bzlmod/custom/toolchain/BUILD b/examples/bzlmod/custom/toolchain/BUILD index ad3960c..882ca00 100644 --- a/examples/bzlmod/custom/toolchain/BUILD +++ b/examples/bzlmod/custom/toolchain/BUILD @@ -32,7 +32,6 @@ arm_none_eabi_toolchain( "-mfloat-abi=hard", "-mfpu=fpv4-sp-d16", ], - gcc_tool = "g++", linkopts = [ "-mcpu=cortex-m4", "-mthumb",