libtbb upgrade breaks build

Issue #54 closed
Benjamin Murauer created an issue

Hi again,

unfortunately, a system update of mine broke the build again. The following report is more a list of things that I think might have happened, but I don’t know since I’m not a C++ expert (or even novice).

This time, my OS updated libtbb to version 2021.4.0. This is what I have figured out so far, I think:

  • Just running make yielded the error message:
    ../../../Source/Ember/EmberPch.h:72:18: fatal error: tbb/task_scheduler_init.h: No such file or directory
  • I then found this article describing that that file was being replaced with something else I think. From the version history, I figured out that they removed this file in version 2021.1.1
    Being a naive non-C++ user, I wanted to figure out what would happen if i just comment out line 72 in EmberPch.h:
    // #include <tbb/task_scheduler_init.h>
    This yielded errors that I have no clue about:
    /usr/include/oneapi/tbb/profiling.h:229:15: error: expected unqualified-id before ‘)’ token
    It might be related to some C++-std-version? Unfortunately, this is where I’m no further help I think. I have tried compiling it with C++20, but that just resulted in more compilation errors that I have no clue about.

If I can be of any help, don’t hesitate to ask.

I’m running the build using GCC 11.1 on Arch Linux 5.15.11, if that is of any help.

Comments (5)

  1. Matt Feemster repo owner

    Thanks for the report. Let me grab the latest tbb from github and see where it breaks and I’ll report back.

  2. Matt Feemster repo owner

    I’ve spent some time looking at this. It appears Intel has relinquished control of Threading Building Blocks and passed on maintenance responsibility to some other organization. They’ve changed around some of how tbb is structured, and added a new dependency for querying hardware capabilities. I am highly reluctant to add new dependencies to the project, because keep in mind they have to work on all three major OSes. I also really don’t have much time to spend on this project, as I am currently spending almost all of my free time on my other project, Keysharp.

    The main reason I was using TBB was for the parallel_for() function. I didn’t use any fancy dynamic partitioning, I just needed to break work up into chunks, one for each core.

    So I have decided to completely strip all TBB dependencies out of the project and just write my own parallel_for() function which took all of 20 lines to do.

    Please pull fresh and try to build again. Let me know how it goes.

  3. Benjamin Murauer reporter

    Hi Matt,

    the build works like a charm. Thank you very much.

    I would like to support you and the development of Fractorium, is there a way where I could donate something?

    Cheers,
    Benjamin

  4. Matt Feemster repo owner

    Glad to hear it works now. One less dependency.

    Thanks for the offer, I am flattered, but I’ve never taken any donations for Fractorium. Maybe I will set up a donation page for Keysharp once I release the code, which should be in a few months.

  5. Log in to comment