Skip to content

Support for Mac OS X, *BSD, and other libc++ environment #28

@SchaichAlonso

Description

@SchaichAlonso

libc++ has started supporting the <ranges> library of c++20, which TinyORM uses, in libc++-13, which is part of llvm-13.

Although libc++-13 has <ranges>, the implementation is incomplete and therefore disabled by default. The incomplete implementation can be enabled by passing the -fexperimental-library option to clang.

While <ranges> support is still incomplete in libc++-15, it is sufficient to build TinyORM's querybuilder and run the querybuilder's test cases w/o detecting flaws.

llvm-16's libc++ has full ranges support, and the -fexperimental-library option is no longer required. All of TinyORM can be built and tests run w/o detecting flaws on libc++-16 (TinyORM d98ee5c on FreeBSD edd0014)

On libc++ systems, the _LIBCPP_VERSION macro can be used to investigate the libc++ version being used, which is not required to be the same as the compiler's and will default to the Operating System's one if a compiler was manually installed. As TinyORM's dependencies link against libc++, care needs to be taken the dependencies use the same libc++ or a compatible version to the one used by TinyORM, making it unfeasible to attempt using a custom libc++ with operating system provided dependencies.

At this point, GitHub offers no hosted runners that are capable of building TinyORM using libc++.

This issue will likely resolve on its' own as Operating Systems update their libc++ in their future releases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    c++C++ code relatedenhancementNew feature or requestfutureTask that has lower priority because there is still much to do.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions