gcc: Drop Ada and ObjC languages support. Ada still fail to build for 32-bit so I decide to drop it and move further. Enable plugin support

This commit is contained in:
Alexey Pavlov
2019-05-28 14:42:50 +03:00
parent 419843edd4
commit 0c60660b0c
2 changed files with 23 additions and 51 deletions

View File

@@ -4,14 +4,18 @@
# Contributor: Renato Silva <br.renatosilva@gmail.com>
# Contributor: wirx6 <wirx654@gmail.com>
_enable_ada=no
_enable_objc=no
_threads="posix"
_realname=gcc
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-libs"
"${MINGW_PACKAGE_PREFIX}-${_realname}-libgfortran"
"${MINGW_PACKAGE_PREFIX}-${_realname}-fortran"
"${MINGW_PACKAGE_PREFIX}-${_realname}-ada"
"${MINGW_PACKAGE_PREFIX}-${_realname}-objc")
$([[ "$_enable_ada" == "yes" ]] && echo "${MINGW_PACKAGE_PREFIX}-${_realname}-ada")
$([[ "$_enable_objc" == "yes" ]] && echo "${MINGW_PACKAGE_PREFIX}-${_realname}-objc")
)
#_snapshot=20181214
pkgver=9.1.0
#_majorver=${pkgver:0:1}
@@ -24,7 +28,7 @@ url="https://gcc.gnu.org"
license=('GPL' 'LGPL' 'FDL' 'custom')
groups=("${MINGW_PACKAGE_PREFIX}-toolchain")
makedepends=("${MINGW_PACKAGE_PREFIX}-${_realname}"
"${MINGW_PACKAGE_PREFIX}-${_realname}-ada"
$([[ "$_enable_ada" == "yes" ]] && echo "${MINGW_PACKAGE_PREFIX}-${_realname}-ada")
"${MINGW_PACKAGE_PREFIX}-binutils"
"${MINGW_PACKAGE_PREFIX}-crt"
"${MINGW_PACKAGE_PREFIX}-headers"
@@ -54,8 +58,7 @@ source=("https://ftp.gnu.org/gnu/gcc/${_realname}-${pkgver%%+*}/${_realname}-${p
0011-Enable-shared-gnat-implib.patch
0014-gcc-9-branch-clone_function_name_1-Retain-any-stdcall-suffix.patch
0130-libstdc++-in-out.patch
0140-gcc-8.2.0-diagnostic-color.patch
pr88568.patch)
0140-gcc-8.2.0-diagnostic-color.patch)
sha256sums=('79a66834e96a6050d8fe78db2c3b32fb285b230b855d0a66288235bc04b327a0'
'SKIP'
'dea2bbad4967280910559c6a11b865aeec19cab34647fb5894cb498b24b14462'
@@ -71,10 +74,7 @@ sha256sums=('79a66834e96a6050d8fe78db2c3b32fb285b230b855d0a66288235bc04b327a0'
'8faff8e503a617f283270f411399a8bcacda3ab62b4072dedf117e108af4844a'
'2321c7dce29a600477e481d16d847f05dc8c6d6461ee1eba7814c5bf62c2ef95'
'a526cfab91a1499be92c824c7f2185a013a38dbdfbeabe63ecbe84451e07b021'
'e467f0ac68b349de826c79b00a45c5ad9e7c5a55d06b9b9fa7afd94c597f6376'
'4bbcb71f7e9e25af641e7abcb12ea4cd7a5ade3a82739414c65259afcbf21256')
_threads="posix"
'e467f0ac68b349de826c79b00a45c5ad9e7c5a55d06b9b9fa7afd94c597f6376')
# Helper macros to help make tasks easier #
apply_patch_with_msg() {
@@ -157,6 +157,14 @@ build() {
;;
esac
local _languages="c,lto,c++,fortran"
if [ "$_enable_ada" == "yes" ]; then
_languages+=",ada"
fi
if [ "$_enable_objc" == "yes" ]; then
_languages+=",objc,obj-c++"
fi
../${_sourcedir}/configure \
--prefix=${MINGW_PREFIX} \
--with-local-prefix=${MINGW_PREFIX}/local \
@@ -168,7 +176,7 @@ build() {
--enable-bootstrap \
--with-arch=${_arch} \
--with-tune=generic \
--enable-languages=ada,c,lto,c++,objc,obj-c++,fortran \
--enable-languages=${_languages} \
--enable-shared --enable-static \
--enable-libatomic \
--enable-threads=${_threads} \
@@ -188,6 +196,7 @@ build() {
--disable-nls \
--disable-werror \
--disable-symvers \
--enable-plugin \
--with-libiconv \
--with-system-zlib \
--with-{gmp,mpfr,mpc,isl}=${MINGW_PREFIX} \
@@ -208,7 +217,9 @@ build() {
rm -rf ${srcdir}${MINGW_PREFIX}
make -j1 DESTDIR=${srcdir} install
mv ${srcdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/adalib/*.dll ${srcdir}${MINGW_PREFIX}/bin/
if [ "$_enable_ada" == "yes" ]; then
mv ${srcdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/adalib/*.dll ${srcdir}${MINGW_PREFIX}/bin/
fi
}
package_mingw-w64-gcc-libs() {
@@ -287,6 +298,7 @@ package_mingw-w64-gcc() {
cp -r lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/include/ssp ${pkgdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/include/
cp -r lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/include-fixed ${pkgdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/
cp -r lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/install-tools ${pkgdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/
cp -r lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/plugin ${pkgdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/
cp lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/cc1.exe ${pkgdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/
cp lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/collect2.exe ${pkgdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/
cp lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/crt*.o ${pkgdir}${MINGW_PREFIX}/lib/gcc/${MINGW_CHOST}/${pkgver%%+*}/

View File

@@ -1,40 +0,0 @@
2019-03-05 Jakub Jelinek <jakub@redhat.com>
PR c/88568
* attribs.c (handle_dll_attribute): Don't clear TREE_STATIC for
dllimport on VAR_DECLs with RECORD_TYPE or UNION_TYPE DECL_CONTEXT.
* g++.dg/other/pr88568.C: New test.
--- a/gcc/attribs.c.jj 2019-01-10 11:44:07.122511397 +0100
+++ b/gcc/attribs.c 2019-03-05 13:59:51.745924578 +0100
@@ -1691,8 +1691,11 @@ handle_dll_attribute (tree * pnode, tree
a function global scope, unless declared static. */
if (current_function_decl != NULL_TREE && !TREE_STATIC (node))
TREE_PUBLIC (node) = 1;
- /* Clear TREE_STATIC because DECL_EXTERNAL is set. */
- TREE_STATIC (node) = 0;
+ /* Clear TREE_STATIC because DECL_EXTERNAL is set, unless
+ it is a C++ static data member. */
+ if (DECL_CONTEXT (node) == NULL_TREE
+ || !RECORD_OR_UNION_TYPE_P (DECL_CONTEXT (node)))
+ TREE_STATIC (node) = 0;
}
if (*no_add_attrs == false)
--- a/gcc/testsuite/g++.dg/other/pr88568.C.jj 2019-03-05 14:03:20.132509560 +0100
+++ b/gcc/testsuite/g++.dg/other/pr88568.C 2019-03-05 14:01:39.674155860 +0100
@@ -0,0 +1,13 @@
+// PR c/88568
+// { dg-do compile }
+// { dg-require-dll "" }
+
+struct S {
+ __attribute__((dllimport)) static const char foo[];
+};
+
+int
+foo (int x)
+{
+ return S::foo[x];
+}