libstdc++ uses TBB to implement the execution library if it is
available. If it's not present, we get a serial backend.
Currently, we aren't getting link errors in most cases because the
reference is optimized out, but when compiling with `-O0`, we hit a
missing symbol.
If we use more of the execution library, we'll reference TBB in ways
that don't optimize out.
As such, test if TBB is available. If so, link against it.
See https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2017
for more information.
Signed-off-by: Adam Emerson <aemerson@redhat.com>
librados
global
json_structures
-)
\ No newline at end of file
+)
+
+# libstdc++ uses TBB to implement <execution> if it is available,
+# which means that if we're going to use <execution>, we need to link
+# against TBB if it's available.
+#
+# It happens to work by accident at present because the optimizer
+# optimizes out our one reference, for now, but this breaks compiling
+# with `-O0` and will break anyway once we try to do more.
+find_package(TBB QUIET)
+if(TBB_FOUND)
+ message(STATUS "Linking to TBB for implementations of <execution>.")
+ target_link_libraries(object_io_exerciser TBB::tbb)
+endif(TBB_FOUND)