icu: fix compilation under CentOS 7
CentOS 7's GCC is quite old and does not put max_align_t under std.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
(cherry picked from commit 6255a77128
)
This commit is contained in:
parent
79ddd03288
commit
10712797f0
2 changed files with 61 additions and 1 deletions
|
@ -11,7 +11,7 @@ PKG_NAME:=icu4c
|
|||
MAJOR_VERSION:=67
|
||||
MINOR_VERSION:=1
|
||||
PKG_VERSION:=$(MAJOR_VERSION).$(MINOR_VERSION)
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(MAJOR_VERSION)_$(MINOR_VERSION)-src.tgz
|
||||
PKG_SOURCE_URL:=https://github.com/unicode-org/icu/releases/download/release-$(MAJOR_VERSION)-$(MINOR_VERSION)
|
||||
|
|
60
libs/icu/patches/010-max_align_t.patch
Normal file
60
libs/icu/patches/010-max_align_t.patch
Normal file
|
@ -0,0 +1,60 @@
|
|||
--- a/common/uarrsort.cpp
|
||||
+++ b/common/uarrsort.cpp
|
||||
@@ -37,7 +37,7 @@ enum {
|
||||
};
|
||||
|
||||
static constexpr int32_t sizeInMaxAlignTs(int32_t sizeInBytes) {
|
||||
- return (sizeInBytes + sizeof(std::max_align_t) - 1) / sizeof(std::max_align_t);
|
||||
+ return (sizeInBytes + sizeof(max_align_t) - 1) / sizeof(max_align_t);
|
||||
}
|
||||
|
||||
/* UComparator convenience implementations ---------------------------------- */
|
||||
@@ -141,7 +141,7 @@ static void
|
||||
insertionSort(char *array, int32_t length, int32_t itemSize,
|
||||
UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
|
||||
|
||||
- icu::MaybeStackArray<std::max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE)> v;
|
||||
+ icu::MaybeStackArray<max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE)> v;
|
||||
if (sizeInMaxAlignTs(itemSize) > v.getCapacity() &&
|
||||
v.resize(sizeInMaxAlignTs(itemSize)) == nullptr) {
|
||||
*pErrorCode = U_MEMORY_ALLOCATION_ERROR;
|
||||
@@ -235,7 +235,7 @@ static void
|
||||
quickSort(char *array, int32_t length, int32_t itemSize,
|
||||
UComparator *cmp, const void *context, UErrorCode *pErrorCode) {
|
||||
/* allocate two intermediate item variables (x and w) */
|
||||
- icu::MaybeStackArray<std::max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE) * 2> xw;
|
||||
+ icu::MaybeStackArray<max_align_t, sizeInMaxAlignTs(STACK_ITEM_SIZE) * 2> xw;
|
||||
if(sizeInMaxAlignTs(itemSize)*2 > xw.getCapacity() &&
|
||||
xw.resize(sizeInMaxAlignTs(itemSize) * 2) == nullptr) {
|
||||
*pErrorCode=U_MEMORY_ALLOCATION_ERROR;
|
||||
--- a/common/utext.cpp
|
||||
+++ b/common/utext.cpp
|
||||
@@ -569,7 +569,7 @@ enum {
|
||||
|
||||
struct ExtendedUText {
|
||||
UText ut;
|
||||
- std::max_align_t extension;
|
||||
+ max_align_t extension;
|
||||
};
|
||||
|
||||
static const UText emptyText = UTEXT_INITIALIZER;
|
||||
@@ -584,7 +584,7 @@ utext_setup(UText *ut, int32_t extraSpace, UErrorCode *status) {
|
||||
// We need to heap-allocate storage for the new UText
|
||||
int32_t spaceRequired = sizeof(UText);
|
||||
if (extraSpace > 0) {
|
||||
- spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(std::max_align_t);
|
||||
+ spaceRequired = sizeof(ExtendedUText) + extraSpace - sizeof(max_align_t);
|
||||
}
|
||||
ut = (UText *)uprv_malloc(spaceRequired);
|
||||
if (ut == NULL) {
|
||||
--- a/tools/toolutil/toolutil.cpp
|
||||
+++ b/tools/toolutil/toolutil.cpp
|
||||
@@ -245,7 +245,7 @@ struct UToolMemory {
|
||||
char name[64];
|
||||
int32_t capacity, maxCapacity, size, idx;
|
||||
void *array;
|
||||
- alignas(std::max_align_t) char staticArray[1];
|
||||
+ alignas(max_align_t) char staticArray[1];
|
||||
};
|
||||
|
||||
U_CAPI UToolMemory * U_EXPORT2
|
Loading…
Reference in a new issue