From patchwork Sat Aug 29 03:17:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rosen Penev X-Patchwork-Id: 1353588 X-Patchwork-Delegate: hauke@hauke-m.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.openwrt.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=1sxnE0qc; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=ff5kxBaS; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BdhXx6Lwhz9sTQ for ; Sat, 29 Aug 2020 13:20:01 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe :List-Id:MIME-Version:Message-Id:Date:Subject:To:From:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Owner; bh=Kq23vFxa50RJv/M7cssK/Hnn8paHm55gx6zaj2HVKww=; b=1sxnE0qc25gT+oYnaFGsLscyB0 uD8hoEvXVeZE3oKXBj5oyHtCtWjt5auE0WV0y/RQLmV4NbtAJa+Ui5FHobauemespYCQ1U0/yyO1s i6ZyfT0KpHekxnvMsHJ4TnXrZ2EJu7brCSMuBCvcUgZSOa5Ckd768n7gqpQIYsJ9Wyf0j6Tew3GM8 aHyaINkNivqq+qIGsFlHuOM8pW0bc7iuWpJAXwjqBkgTQNgZCP5f/9nXLI6SauoJNHgimizAyQ41s iXBXySVqoC4WHPNOUi3qUBK5N7cIzChAmUiMMGVRVpZCJoSH4XyTcHbHm9gBWOZ2xnISk1JJHLQVa LJeHrqHQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kBrNE-0000Sh-ED; Sat, 29 Aug 2020 03:17:48 +0000 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kBrNB-0000Rc-0x for openwrt-devel@lists.openwrt.org; Sat, 29 Aug 2020 03:17:46 +0000 Received: by mail-pl1-x630.google.com with SMTP id bh1so511605plb.12 for ; Fri, 28 Aug 2020 20:17:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=4rEofqIU+l1G+QzUvxa22AjExVj8cpaU9SWWL6dLffE=; b=ff5kxBaS5W8uB4nh3fjf0YBoVlm/LN1hpZnr/Zbfb+wOJtABXsswZ+eB1VKIODh1va VU+JXkBkEQxd8UYmLX0q7PcIHpLyh5vSeFZrBTIFxnyf0waH8EAMkSfalV85iePQsKQL ylEj+PeJAaBkhB7/qOQUR8UOG1r9KJ9fBsWiiZ9gpH9Bm+gKqDvVrHZIyA/4CRGxJUZs higX4EOnerbNjes04xIIf7ORe2OSZknd2iDMI7bvU094Ek2epO5/qZR/93zPiguSYTmJ l+cHoLw4q3Fk3lxGBcOkqUd4PQLS8PMNEN+1BTkmomH+zy+K6F5od89syLmJiFfHPZXE tnPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=4rEofqIU+l1G+QzUvxa22AjExVj8cpaU9SWWL6dLffE=; b=NQkYZ2sNE/dLWMv5ZfiUUOrmuThQ/BkVy+xQe4G3BhADSswp1iXc+xJkkGRAAG+cPv HhPkDykLWMQyMxUffq8vp+53b3xKgcYb6ViM0hn88F0MRJ8H4/cryozPCfwSXCcJBh70 R4APa2XNfma+LMBIFl3woJ4cltqQH3QoaUaBWlblIly51nRZrPLbzBchfkYlp7e6eRIn +V7Whn99mJ/UQ+7h5jVe0y8SU0M5n0yaH8qyZng4Nj304NEqnuPDCwAfEXMsa+dgVnhF eXxmS6z+A35tzDA+wi7FIql0lgt/KV1cheIjAlimzhBMgrLxAvXX+1Oqo2yC0osRR2yT YLcQ== X-Gm-Message-State: AOAM53242L6tkRTuKgYctx7e7Q5W+PTJJCMH+H/Ukc+gSEKzelnPP3UR 6QKUfEs+u2pRvmAecFcLyzTGQW4CE27VJA== X-Google-Smtp-Source: ABdhPJxxzktl3T3MfgTw4qqFTEMTaVdOFRuFnNMeu7Lu8TwHM0KAPt0vYxLyxgZNgzCvPSaBLhFWcA== X-Received: by 2002:a17:90a:de17:: with SMTP id m23mr1665338pjv.51.1598671060997; Fri, 28 Aug 2020 20:17:40 -0700 (PDT) Received: from mangix-trapnet.lan ([2001:470:1f05:79e::a89]) by smtp.gmail.com with ESMTPSA id p184sm886956pfb.47.2020.08.28.20.17.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Aug 2020 20:17:40 -0700 (PDT) From: Rosen Penev To: openwrt-devel@lists.openwrt.org Subject: [PATCHv3 1/2] libcxxabi: add Date: Fri, 28 Aug 2020 20:17:38 -0700 Message-Id: <20200829031739.249028-1-rosenp@gmail.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200828_231745_197600_80F2EDA4 X-CRM114-Status: GOOD ( 18.55 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:630 listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [rosenp[at]gmail.com] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org 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 Added patch to fix ARM compilation. Signed-off-by: Rosen Penev --- v3: Add ARM patch to fix compilation at least under mvebu. v2: Added extra description. package/libs/libcxxabi/Makefile | 71 ++++++++++++++++++++ package/libs/libcxxabi/patches/010-arm.patch | 27 ++++++++ 2 files changed, 98 insertions(+) create mode 100644 package/libs/libcxxabi/Makefile create mode 100644 package/libs/libcxxabi/patches/010-arm.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 +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)) diff --git a/package/libs/libcxxabi/patches/010-arm.patch b/package/libs/libcxxabi/patches/010-arm.patch new file mode 100644 index 0000000000..c4f6907c97 --- /dev/null +++ b/package/libs/libcxxabi/patches/010-arm.patch @@ -0,0 +1,27 @@ +--- a/src/cxa_exception.h ++++ b/src/cxa_exception.h +@@ -27,6 +27,13 @@ _LIBCXXABI_HIDDEN uint64_t __getExceptionClass (const _Unwind_Exception*); + _LIBCXXABI_HIDDEN void __setExceptionClass ( _Unwind_Exception*, uint64_t); + _LIBCXXABI_HIDDEN bool __isOurExceptionClass(const _Unwind_Exception*); + ++#if defined(__arm__) && defined(__GNUC__) ++// missing values from _Unwind_Reason_Code enum ++#define _URC_FATAL_PHASE2_ERROR ((_Unwind_Reason_Code)2) ++#define _URC_FATAL_PHASE1_ERROR ((_Unwind_Reason_Code)3) ++#define _URC_NORMAL_STOP ((_Unwind_Reason_Code)4) ++#endif ++ + struct _LIBCXXABI_HIDDEN __cxa_exception { + #if defined(__LP64__) || defined(_WIN64) || defined(_LIBCXXABI_ARM_EHABI) + // Now _Unwind_Exception is marked with __attribute__((aligned)), +--- a/src/cxa_personality.cpp ++++ b/src/cxa_personality.cpp +@@ -1108,7 +1108,7 @@ __gxx_personality_v0(_Unwind_State state, + + // Check the undocumented force unwinding behavior + bool is_force_unwinding = state & _US_FORCE_UNWIND; +- state &= ~_US_FORCE_UNWIND; ++ state = (_Unwind_State)(state & ~_US_FORCE_UNWIND); + + scan_results results; + switch (state) { From patchwork Sat Aug 29 03:17:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rosen Penev X-Patchwork-Id: 1353589 X-Patchwork-Delegate: hauke@hauke-m.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.openwrt.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=UPVjbEJc; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=MrXJC8Qw; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BdhXx5txrz9sTC for ; Sat, 29 Aug 2020 13:20:01 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe :List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:To:From: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=X4sifuCjFTm0OYQAqlnreYKy76ZWuJAeBkbkDVFKgu8=; b=UPVjbEJcNDTgBP4dFkncNWv6F+ mQGJtP+yzKOhS9PPxu1UbVhDmdFXGTK5Vcje0PPXQI47Cx6YH+nl+oIW48kN6MEFZ7vkSDRNjQgZg pT2/VRAO63eiuDsXGa5t+C+KPzPdBQFgP4wY6qF3XPqrNhIpZLibR4iNBo9YQ37ecDqPQiyDI9ZT0 x8930tcz7G6dliTRR+sYEE94/FGe1shzYzCcbGjgtDtnJgWd8KeUnMyP9tPT7ULrgUCC1eCqjLqbA A8/Ghwigp+ciNUFX+oUZkq4LEnyKleMk7B/5aRAuVllM6R5pF3ykw95R4sWYIbtgLaBfqg6BSPRLH xi9AYURA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kBrNF-0000Ss-R0; Sat, 29 Aug 2020 03:17:49 +0000 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kBrNB-0000Rf-Iq for openwrt-devel@lists.openwrt.org; Sat, 29 Aug 2020 03:17:46 +0000 Received: by mail-pf1-x42e.google.com with SMTP id w7so144996pfi.4 for ; Fri, 28 Aug 2020 20:17:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=v33W2KREr3niiuSVviiF10UFt/hKae4wB52qAevpO7M=; b=MrXJC8QwHL529Atbo6BLfhKuyZFn/6Ax4WWQs7ZvhCtCHgGzE+Ar0/QZD8ke3On5/g bYA0dGDBZQljVQcE74WwwSLjZyT+h5zI20iCh7nSfxB+fZzqDGusxtr4BhznPdBqWHEW j8iPP0EoXD32boR2cRMujn+/giece7DIBsgTfNNKVMnpgm38McCj3DGhLZyvYZqwxlr4 jYQEasQjdrGPKdDJWt31vDOmrgZzBBAaEE9R8Bjr0ThrJjyKY6ys+KK3C+IHQvCeoboG P/S6kP/L7A+7aH0W9xjsOozVOGeEhxwD8S8vShjCHxhfsJPBRzuk5R27f0ZjF9c+2e9G rvJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=v33W2KREr3niiuSVviiF10UFt/hKae4wB52qAevpO7M=; b=EhyPflGbFwGbi2CbRyqgaYNGy2jOZcIbjO555mYVX5OOUi1ojooFsUbSXckJpqsxSR v9eer2tFgY/dl8AmzVSA6rsl57oyXKy+b/neRJEnggbV+rEDaA7rptOvyuKiBn9sXQON z0GE/qrqzAh0ibTN5/aix1AY5BKfkjr6fH6DmKqy2mvRqDwx7FACpty0Xzm/idbnaxW4 YNzFeIvSmaSqYvlehaLzb7M3wZPc+aRc2dgTwlb23Xp5gLXDyElkJGZVf5SoBsWsgtGZ UqAPV3vGnRQS9N/NE/epEC4bU7qwqQanvC3TcmwF+mI3WkVwZwj0BhTPpAc0zotQCkx7 F3MQ== X-Gm-Message-State: AOAM5338+6FI/9FDqj7DAMvhSTZy0X6BSKfBACQYuD3A69LAZC0jT/XJ UKqmPrYCazjSO3jmX7bVtXPWGXPndOW28g== X-Google-Smtp-Source: ABdhPJwbk6yocB7u0H9a3FA48lLAuU56cawE5KYmVWTlsHkedalbSXNITsaWdcv3Gu6xJuTaZQi6vg== X-Received: by 2002:a63:3fcf:: with SMTP id m198mr1167069pga.400.1598671061773; Fri, 28 Aug 2020 20:17:41 -0700 (PDT) Received: from mangix-trapnet.lan ([2001:470:1f05:79e::a89]) by smtp.gmail.com with ESMTPSA id p184sm886956pfb.47.2020.08.28.20.17.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Aug 2020 20:17:41 -0700 (PDT) From: Rosen Penev To: openwrt-devel@lists.openwrt.org Subject: [PATCHv3 2/2] libcxx: update to 10.0.0 Date: Fri, 28 Aug 2020 20:17:39 -0700 Message-Id: <20200829031739.249028-2-rosenp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200829031739.249028-1-rosenp@gmail.com> References: <20200829031739.249028-1-rosenp@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200828_231745_634859_74ACFFED X-CRM114-Status: GOOD ( 20.23 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:42e listed in] [list.dnswl.org] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [rosenp[at]gmail.com] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org Switched to upstream tarballs. Switched to libcxxabi as using libsupc++ is quite wonky. Fixed description. Removed patches. The fixes are cosmetic. Added ssp patch. This one is needed for i386 and powerpc under musl. Compile tested every C++ package in the tree with the exception of several boost packages. There's something broken with boost. Ran tested with gerbera. Signed-off-by: Rosen Penev --- package/libs/libcxx/Makefile | 18 +++++------ package/libs/libcxx/files/g++-libcxx | 4 +-- package/libs/libcxx/patches/010-cxx17.patch | 14 --------- package/libs/libcxx/patches/010-ssp.patch | 13 ++++++++ package/libs/libcxx/patches/020-fixes.patch | 35 --------------------- 5 files changed, 24 insertions(+), 60 deletions(-) delete mode 100644 package/libs/libcxx/patches/010-cxx17.patch create mode 100644 package/libs/libcxx/patches/010-ssp.patch delete mode 100644 package/libs/libcxx/patches/020-fixes.patch diff --git a/package/libs/libcxx/Makefile b/package/libs/libcxx/Makefile index 8343cbb427..3809bea651 100644 --- a/package/libs/libcxx/Makefile +++ b/package/libs/libcxx/Makefile @@ -7,19 +7,20 @@ include $(TOPDIR)/rules.mk PKG_NAME:=libcxx -PKG_VERSION:=9.0.1 -PKG_RELEASE:=4 +PKG_VERSION:=10.0.0 +PKG_RELEASE:=1 -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://git.llvm.org/git/libcxx -PKG_SOURCE_VERSION:=2076f539f410805ef88692b9c0ce0a0b882a7680 -PKG_MIRROR_HASH:=d527880a18dec9109575c76717cf5288fb91c11381b9d261cae2e5bebcbdab2e +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:=270f8a3f176f1981b0f6ab8aa556720988872ec2b48ed3b605d0ced8d09156c7 +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).src PKG_MAINTAINER:=Rosen Penev PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE.txt PKG_BUILD_PARALLEL:=1 +PKG_BUILD_DEPENDS:=libcxxabi CMAKE_BINARY_SUBDIR:=build include $(INCLUDE_DIR)/package.mk @@ -34,12 +35,11 @@ define Package/libcxx endef define Package/libcxx/description - LLVM C++ library targeting C++11 and above + libc++ is an implementation of the C++ standard library, targeting C++11, C++14 and above. endef CMAKE_OPTIONS += \ - -DLIBCXX_CXX_ABI="libsupc++" \ - -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)/include/c++/$(CONFIG_GCC_VERSION);$(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)/include/c++/$(CONFIG_GCC_VERSION)/$(REAL_GNU_TARGET_NAME)" \ + -DLIBCXX_CXX_ABI="libcxxabi" \ -DLIBCXX_ENABLE_ASSERTIONS=OFF \ -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=OFF \ -DLIBCXX_INCLUDE_BENCHMARKS=OFF \ diff --git a/package/libs/libcxx/files/g++-libcxx b/package/libs/libcxx/files/g++-libcxx index 81ca46eb0e..88b3e7da01 100755 --- a/package/libs/libcxx/files/g++-libcxx +++ b/package/libs/libcxx/files/g++-libcxx @@ -13,7 +13,7 @@ do -static) [ "$WRAPPER_LIBS" != "-lc -lgcc_s -lssp_nonshared -lgcc_eh" ] && WRAPPER_LIBS="-lc -lgcc_s -lssp_nonshared -lgcc_eh" ;; esac done -[ "$WRAPPER_INCLIB" = "Y" ] && WRAPPER_OPTIONS="-nodefaultlibs $WRAPPER_LIBDIR -lc++ -lsupc++ $WRAPPER_LIBS" +[ "$WRAPPER_INCLIB" = "Y" ] && WRAPPER_OPTIONS="-nodefaultlibs $WRAPPER_LIBDIR -lc++ -lc++abi $WRAPPER_LIBS" -exec CXX -fno-builtin -nostdinc++ -DGCC_HASCLASSVISIBILITY "$WRAPPER_INCLUDEDIR" "$@" $WRAPPER_OPTIONS +exec CXX -nostdinc++ -DGCC_HASCLASSVISIBILITY "$WRAPPER_INCLUDEDIR" "$@" $WRAPPER_OPTIONS diff --git a/package/libs/libcxx/patches/010-cxx17.patch b/package/libs/libcxx/patches/010-cxx17.patch deleted file mode 100644 index dceec9d4f3..0000000000 --- a/package/libs/libcxx/patches/010-cxx17.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -524,9 +524,9 @@ remove_flags(-Wno-pedantic -pedantic-err - 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}") diff --git a/package/libs/libcxx/patches/010-ssp.patch b/package/libs/libcxx/patches/010-ssp.patch new file mode 100644 index 0000000000..c9dc90c7f2 --- /dev/null +++ b/package/libs/libcxx/patches/010-ssp.patch @@ -0,0 +1,13 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -760,6 +760,10 @@ function(cxx_link_system_libraries target) + target_link_libraries(${target} PRIVATE atomic) + endif() + ++ if (LIBCXX_HAS_MUSL_LIBC) ++ target_link_libraries(${target} PRIVATE ssp_nonshared) ++ endif() ++ + if (MINGW) + target_link_libraries(${target} PRIVATE "${MINGW_LIBRARIES}") + endif() diff --git a/package/libs/libcxx/patches/020-fixes.patch b/package/libs/libcxx/patches/020-fixes.patch deleted file mode 100644 index 22ac494c04..0000000000 --- a/package/libs/libcxx/patches/020-fixes.patch +++ /dev/null @@ -1,35 +0,0 @@ ---- a/include/cmath -+++ b/include/cmath -@@ -615,7 +615,7 @@ _Fp __lerp(_Fp __a, _Fp __b, _Fp __t) no - - if (__t == 1) return __b; - const _Fp __x = __a + __t * (__b - __a); -- if (__t > 1 == __b > __a) -+ if ((__t > 1) == (__b > __a)) - return __b < __x ? __x : __b; - else - return __x < __b ? __x : __b; ---- a/include/memory -+++ b/include/memory -@@ -1696,7 +1696,7 @@ struct _LIBCPP_TEMPLATE_VIS allocator_tr - 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 ::value>