diff mbox series

[1/2] libcxxabi: add

Message ID 20200711183530.40497-1-rosenp@gmail.com
State Superseded
Headers show
Series [1/2] libcxxabi: add | expand

Commit Message

Rosen Penev July 11, 2020, 6:35 p.m. UTC
This will be used for libcxx.

libcxxabi is needed as libsupc++ is not good enough for libcxx. It uses
GCC specific stuff which causes failed compilation for some packages.
There are also runtime issues, most notably with cxxopts where the
program just crashes.

Reference: https://github.com/gerbera/gerbera/issues/795

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 v2: Added extra description.
 package/libs/libcxxabi/Makefile | 71 +++++++++++++++++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 package/libs/libcxxabi/Makefile
diff mbox series

Patch

diff --git a/package/libs/libcxxabi/Makefile b/package/libs/libcxxabi/Makefile
new file mode 100644
index 0000000000..90547561b2
--- /dev/null
+++ b/package/libs/libcxxabi/Makefile
@@ -0,0 +1,71 @@ 
+
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libcxxabi
+PKG_VERSION:=10.0.0
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).src.tar.xz
+PKG_SOURCE_URL:=https://github.com/llvm/llvm-project/releases/download/llvmorg-$(PKG_VERSION)
+PKG_HASH:=e71bac75a88c9dde455ad3f2a2b449bf745eafd41d2d8432253b2964e0ca14e1
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).src
+
+PKG_MAINTAINER:=Rosen Penev <rosenp@gmail.com>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE.txt
+
+PKG_BUILD_PARALLEL:=1
+CMAKE_BINARY_SUBDIR:=build
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/libcxxabi
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=LLVM lib++abi
+  URL:=https://libcxxabi.llvm.org/
+  DEPENDS:=+libpthread
+  BUILDONLY:=1
+endef
+
+define Package/libcxxabi/description
+  libc++abi is a new implementation of low level support for a standard C++ library.
+endef
+
+CMAKE_OPTIONS += \
+	-DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
+	-DLIBCXXABI_ENABLE_PEDANTIC=OFF \
+	-DLIBCXXABI_ENABLE_PIC=ON \
+	-DLIBCXXABI_ENABLE_WERROR=OFF \
+	-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
+	-DLIBCXXABI_USE_COMPILER_RT=OFF \
+	-DLIBCXXABI_ENABLE_THREADS=ON \
+	-DLIBCXXABI_HAS_PTHREAD_API=ON \
+	-DLIBCXXABI_INCLUDE_TESTS=OFF \
+	-DLIBCXXABI_LIBDIR_SUFFIX="" \
+	-DLIBCXXABI_INSTALL_LIBRARY=ON \
+	-DLIBCXXABI_ENABLE_SHARED=OFF \
+	-DLIBCXXABI_LIBCXX_SRC_DIR=$(BUILD_DIR)/libcxx-$(PKG_VERSION).src \
+	-DLIBCXXABI_LIBCXX_INCLUDES=$(BUILD_DIR)/libcxx-$(PKG_VERSION).src/include
+
+TARGET_CXXFLAGS += -flto
+TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
+
+define Build/Prepare
+	$(MAKE) -C $(TOPDIR)/package/libs/libcxx prepare
+	$(call Build/Prepare/Default)
+endef
+
+define Build/InstallDev
+	$(call Build/InstallDev/cmake,$(1))
+	$(INSTALL_DIR) $(1)/usr/include/
+	$(INSTALL_DATA) $(PKG_BUILD_DIR)/include/*.h $(1)/usr/include/
+endef
+
+$(eval $(call BuildPackage,libcxxabi))