diff mbox series

[OpenWrt-Devel,1/2] libcxxabi: add

Message ID 20200602225338.2234702-1-rosenp@gmail.com
State Deferred
Headers show
Series [OpenWrt-Devel,1/2] libcxxabi: add | expand

Commit Message

Rosen Penev June 2, 2020, 10:53 p.m. UTC
This will be used for libcxx.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 package/libs/libcxxabi/Makefile | 64 +++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100644 package/libs/libcxxabi/Makefile

Comments

Rosen Penev June 3, 2020, 8:55 p.m. UTC | #1
On Wed, Jun 3, 2020 at 1:33 PM Ian Cooper <iancooper@hotmail.com> wrote:
>
Use Reply All to get this posted to the mailing list.
>
> I got your libcxx-abi compiled. I just put together a quick hack so I didn't have to create new package makefiles for llvm-project or worry too much about versions in the name of the libcxx source, so it's up to you to create the dependencies and make sure the sources are available in the right location at package build time.
>
> It needs the llvm-project source and location of the libcxx source and includes. The llvm-project source is a gigantic 2GB git repo.
That's a no go.
>
> $ du -h -d 1 .
> 2.0G    ./llvm-project
>
> Adding the three lines at the bottom to the CMAKE_OPTIONS got it to compile.
>
> 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 \
>         -DLLVM_PATH=$(TOPDIR)/ian/llvm-project \
I don't think this is needed.
>         -DLIBCXXABI_LIBCXX_SRC_DIR=$(BUILD_DIR)/libcxx-10.0.0.src \
>         -DLIBCXXABI_LIBCXX_INCLUDES=$(BUILD_DIR)/libcxx-10.0.0.src/include
This sounds like it can work. However, libcxx depends on libcxxabi. I
think the way to get around this is to make a junk HostBuild that
places the headers in staging_dir.
>
>
> > -----Original Message-----
> > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org]
> > On Behalf Of Rosen Penev
> > Sent: 02 June 2020 23:54
> > To: openwrt-devel@lists.openwrt.org
> > Subject: [OpenWrt-Devel] [PATCH 1/2] libcxxabi: add
> >
> > This will be used for libcxx.
> >
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> >  package/libs/libcxxabi/Makefile | 64
> > +++++++++++++++++++++++++++++++++
> >  1 file changed, 64 insertions(+)
> >  create mode 100644 package/libs/libcxxabi/Makefile
> >
> > diff --git a/package/libs/libcxxabi/Makefile b/package/libs/libcxxabi/Makefile
> > new file mode 100644 index 0000000000..bde77c250a
> > --- /dev/null
> > +++ b/package/libs/libcxxabi/Makefile
> > @@ -0,0 +1,64 @@
> > +
> > +#
> > +# 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:=e71bac75a88c9dde455ad3f2a2b449bf745eafd41d2d8432253b2
> > 964e0ca1
> > +4e1 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
> > +
> > +TARGET_CXXFLAGS += -flto
> > +TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
> > +
> > +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))
> > --
> > 2.26.2
> >
> >
> > _______________________________________________
> > openwrt-devel mailing list
> > openwrt-devel@lists.openwrt.org
> > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
diff mbox series

Patch

diff --git a/package/libs/libcxxabi/Makefile b/package/libs/libcxxabi/Makefile
new file mode 100644
index 0000000000..bde77c250a
--- /dev/null
+++ b/package/libs/libcxxabi/Makefile
@@ -0,0 +1,64 @@ 
+
+#
+# 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
+
+TARGET_CXXFLAGS += -flto
+TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed
+
+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))