mirror of
https://git.freebsd.org/ports.git
synced 2025-06-27 07:30:32 -04:00
- Clean up the Makefile. - Follow some upstream recommendations (--with-data-packaging=archive, --disable-renaming, -DICU_NO_USER_DATA_OVERRIDE). - Patch makefiles to install static libraries with INSTALL_DATA so they aren't stripped. - Patch config/mh-bsd-gcc to sync with config/mh-linux-gcc. - Fix endianness detection in ICU. The code wanted to use BYTE_ORDER defined in machine/endian.h, but this isn't visible because ICU is compiled with _XOPEN_SOURCE. Patch the code to use _BYTE_ORDER instead. - Compile ICU with C++11 compiler to enable move constructors. - Patch ICU to fix a problem with atomics in the case of a C++11 compiler without C++11 header <atomic> (like Clang on FreeBSD 9). - Bump all ports that depend on it due to library version change. - Add USES=compiler:c++0x to some ports that pick up -std=c++0x from ICU pkgconfig files. - Add USES=compiler:c++11-lib to graphics/libcdr01 because it also needs a C++11 runtime library now. Add this to all ports that depend on it so their executables load the right libstdc++.so on FreeBSD 9. PR: 205120 Exp-run by: antoine Approved by: portmgr (antoine)
25 lines
956 B
C++
25 lines
956 B
C++
--- common/umutex.cpp.orig 2016-03-23 20:50:10 UTC
|
|
+++ common/umutex.cpp
|
|
@@ -264,19 +264,19 @@ static pthread_cond_t initCondition = PT
|
|
U_COMMON_API UBool U_EXPORT2
|
|
umtx_initImplPreInit(UInitOnce &uio) {
|
|
pthread_mutex_lock(&initMutex);
|
|
- int32_t state = uio.fState;
|
|
+ int32_t state = umtx_loadAcquire(uio.fState);
|
|
if (state == 0) {
|
|
umtx_storeRelease(uio.fState, 1);
|
|
pthread_mutex_unlock(&initMutex);
|
|
return TRUE; // Caller will next call the init function.
|
|
} else {
|
|
- while (uio.fState == 1) {
|
|
+ while (umtx_loadAcquire(uio.fState) == 1) {
|
|
// Another thread is currently running the initialization.
|
|
// Wait until it completes.
|
|
pthread_cond_wait(&initCondition, &initMutex);
|
|
}
|
|
pthread_mutex_unlock(&initMutex);
|
|
- U_ASSERT(uio.fState == 2);
|
|
+ U_ASSERT(umtx_loadAcquire(uio.fState) == 2);
|
|
return FALSE;
|
|
}
|
|
}
|