the math headers on 10.5 don't define all the c++11 features, so gcc versions < 7 don't import any of them. This is fixed in gcc7+. In older versions, one fix is to just use the Apple standard functions, in this case log2 --- gfx/ots/src/silf.cc | 6 +++--- gfx/ots/src/sill.cc | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gfx/ots/src/silf.cc b/gfx/ots/src/silf.cc index 56970427b..4e696bf7c 100644 --- a/gfx/ots/src/silf.cc +++ b/gfx/ots/src/silf.cc @@ -298,7 +298,7 @@ bool OpenTypeSILF::SILSub::ParsePart(Buffer& table) { this->searchPseudo = this->pseudoSelector = this->pseudoShift = 0; } } else { - unsigned floorLog2 = std::floor(std::log2(this->numPseudo)); + unsigned floorLog2 = std::floor(log2(this->numPseudo)); if (this->searchPseudo != 6 * (unsigned)std::pow(2, floorLog2) || this->pseudoSelector != floorLog2 || this->pseudoShift != 6 * this->numPseudo - this->searchPseudo) { @@ -565,7 +565,7 @@ LookupClass::ParsePart(Buffer& table) { this->searchRange = this->entrySelector = this->rangeShift = 0; } } else { - unsigned floorLog2 = std::floor(std::log2(this->numIDs)); + unsigned floorLog2 = std::floor(log2(this->numIDs)); if (this->searchRange != (unsigned)std::pow(2, floorLog2) || this->entrySelector != floorLog2 || this->rangeShift != this->numIDs - this->searchRange) { @@ -694,7 +694,7 @@ SILPass::ParsePart(Buffer& table, const size_t SILSub_init_offset, this->searchRange = this->entrySelector = this->rangeShift = 0; } } else { - unsigned floorLog2 = std::floor(std::log2(this->numRange)); + unsigned floorLog2 = std::floor(log2(this->numRange)); if (this->searchRange != 6 * (unsigned)std::pow(2, floorLog2) || this->entrySelector != floorLog2 || this->rangeShift != 6 * this->numRange - this->searchRange) { diff --git a/gfx/ots/src/sill.cc b/gfx/ots/src/sill.cc index c7b20a980..cd5cf6803 100644 --- a/gfx/ots/src/sill.cc +++ b/gfx/ots/src/sill.cc @@ -35,7 +35,7 @@ bool OpenTypeSILL::Parse(const uint8_t* data, size_t length) { this->searchRange = this->entrySelector = this->rangeShift = 0; } } else { - unsigned floorLog2 = std::floor(std::log2(this->numLangs)); + unsigned floorLog2 = std::floor(log2(this->numLangs)); if (this->searchRange != (unsigned)std::pow(2, floorLog2) || this->entrySelector != floorLog2 || this->rangeShift != this->numLangs - this->searchRange) {