libcxx: Add size optimizations
Changed standard to 2a. 2a (as well as 17) contain more constexpr functions, which are evaluated at compile time. This saves space. Added --gc-sections. With the CXXABI change, this now makes the package smaller. With these, size went down to 210845 on mipsel_24kc. Also fixed two small compiler warnings. No real change in behavior. Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
parent
1f8ab1c640
commit
9f7d36d1a9
package/libs/libcxx
@ -47,7 +47,7 @@ CMAKE_OPTIONS += \
|
|||||||
-DLIBCXX_HAS_MUSL_LIBC=$(if $(CONFIG_USE_MUSL),ON,OFF)
|
-DLIBCXX_HAS_MUSL_LIBC=$(if $(CONFIG_USE_MUSL),ON,OFF)
|
||||||
|
|
||||||
TARGET_CXXFLAGS += -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -Wno-attributes -flto
|
TARGET_CXXFLAGS += -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -Wno-attributes -flto
|
||||||
TARGET_LDFLAGS += -Wl,--as-needed
|
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed -flto=jobserver
|
||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
$(call Build/InstallDev/cmake,$(1))
|
$(call Build/InstallDev/cmake,$(1))
|
||||||
|
14
package/libs/libcxx/patches/010-cxx17.patch
Normal file
14
package/libs/libcxx/patches/010-cxx17.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -524,9 +524,9 @@ remove_flags(-Wno-pedantic -pedantic-errors -pedantic)
|
||||||
|
if (LIBCXX_HAS_MUSL_LIBC OR LIBCXX_TARGETING_CLANG_CL)
|
||||||
|
# musl's pthread implementations uses volatile types in their structs which is
|
||||||
|
# not a constexpr in C++11 but is in C++14, so we use C++14 with musl.
|
||||||
|
- set(LIBCXX_STANDARD_VER c++14 CACHE STRING "internal option to change build dialect")
|
||||||
|
+ set(LIBCXX_STANDARD_VER c++2a CACHE STRING "internal option to change build dialect")
|
||||||
|
else()
|
||||||
|
- set(LIBCXX_STANDARD_VER c++11 CACHE STRING "internal option to change build dialect")
|
||||||
|
+ set(LIBCXX_STANDARD_VER c++2a CACHE STRING "internal option to change build dialect")
|
||||||
|
endif()
|
||||||
|
add_compile_flags_if_supported(-std=${LIBCXX_STANDARD_VER})
|
||||||
|
add_compile_flags_if_supported("/std:${LIBCXX_STANDARD_VER}")
|
24
package/libs/libcxx/patches/020-fixes.patch
Normal file
24
package/libs/libcxx/patches/020-fixes.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
--- a/include/memory
|
||||||
|
+++ b/include/memory
|
||||||
|
@@ -1696,7 +1696,7 @@ struct _LIBCPP_TEMPLATE_VIS allocator_traits
|
||||||
|
ptrdiff_t _Np = __end1 - __begin1;
|
||||||
|
__end2 -= _Np;
|
||||||
|
if (_Np > 0)
|
||||||
|
- _VSTD::memcpy(__end2, __begin1, _Np * sizeof(_Tp));
|
||||||
|
+ __end2 = __begin1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
--- a/src/filesystem/filesystem_common.h
|
||||||
|
+++ b/src/filesystem/filesystem_common.h
|
||||||
|
@@ -197,8 +197,8 @@ private:
|
||||||
|
using chrono::duration;
|
||||||
|
using chrono::duration_cast;
|
||||||
|
|
||||||
|
-using TimeSpec = struct ::timespec;
|
||||||
|
-using StatT = struct ::stat;
|
||||||
|
+using TimeSpec = struct timespec;
|
||||||
|
+using StatT = struct stat;
|
||||||
|
|
||||||
|
template <class FileTimeT, class TimeT,
|
||||||
|
bool IsFloat = is_floating_point<typename FileTimeT::rep>::value>
|
Loading…
x
Reference in New Issue
Block a user