summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: ee965e8a06af2aeb7f8357621524ff13444352ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Maintainer: jhbruhn <aur@jhbruhn.de>
# Contributer: schuay <jakob.gruber@gmail.com>
# Contributor: Brad Fanella <bradfanella@archlinux.us>
# Contributor: Corrado Primier <bardo@aur.archlinux.org>
# Contributor: danst0 <danst0@west.de>

# Build order: avr-binutils -> avr-gcc -> avr-libc

_target=avr
_pkgname=$_target-gcc
pkgname=$_pkgname-43
pkgver=4.3.3
_islver=0.24
pkgrel=1
#_snapshot=7-20180125
pkgdesc='The GNU AVR Compiler Collection'
provides=("$_pkgname=$pkgver")
conflicts=("$_pkgname")
arch=(x86_64)
license=(GPL LGPL FDL custom)
url='http://gcc.gnu.org/'
depends=($_target-binutils gcc-libs libmpc)
optdepends=('avr-libc: Standard C library for Atmel AVR development')
options=(!emptydirs !strip)
source=(https://ftp.gnu.org/gnu/gcc/gcc-$pkgver/gcc-$pkgver.tar.gz
        #ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.xz
       )
sha256sums=('5f181ef99539024b6870af80bcfbfd19d1df16a567c7f1808ae088df3593fc34')
#validpgpkeys=(D3A93CAD751C2AF4F8C7AD516C35B99309B5FA62  # Jakub Jelinek <jakub@redhat.com>
#              33C235A34C46AA3FFB293709A328C3A2C3C45C06  # Jakub Jelinek <jakub@redhat.com>
#              13975A70E63C361C73AE69EF6EEB81F8981C74C7) # Richard Guenther <richard.guenther@gmail.com>

if [ -n "${_snapshot}" ]; then
  _basedir=gcc-${_snapshot}
else
  _basedir=gcc-${pkgver}
fi

prepare() {
    cd ${_basedir}
}

build() {
    cd "${srcdir}"/${_basedir} 

    config_guess=$(./config.guess)
    # https://bugs.archlinux.org/task/34629
    # hack! - some configure tests for header files using "$CPP $CPPFLAGS"
    sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure
    
    # GCCVER=$(gcc -dumpversion | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$/&00/')
    echo ${pkgver} > gcc/BASE-VER
    config_guess=$(./config.guess)
    cd "${srcdir}"
    mkdir gcc-build && cd gcc-build

    export CFLAGS_FOR_TARGET='-O2 -pipe -Wno-error=format-security -Wno-error -fcommon'
    export CXXFLAGS_FOR_TARGET='-O2 -pipe -Wno-error=format-security -Wno-error -fcommon'
    export CFLAGS="-Wno-error=format-security -fgnu89-inline -fcommon -Wno-error"
    export CXXFLAGS="-Wno-error=format-security -fgnu89-inline -fcommon -Wno-error"

    # Doesn't like FORTIFY_SOURCE
    CPPFLAGS="${CPPFLAGS//-D_FORTIFY_SOURCE=?/}"

    # Doesn't like -fstack-protector-strong
    CFLAGS="${CFLAGS//-fstack-protector-strong/-fstack-protector}"
    CXXFLAGS="${CXXFLAGS//-fstack-protector-strong/-fstack-protector}"

    # using -pipe causes spurious test-suite failures
    # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565
    CFLAGS="${CFLAGS/-pipe/}"
    CXXFLAGS="${CXXFLAGS/-pipe/}"

    # Flags from new compilers that old compilers don't recognize
    CFLAGS="${CFLAGS/-fno-plt/}"
    CXXFLAGS="${CXXFLAGS/-fno-plt/}"

    CFLAGS="${CFLAGS/-Wformat-overflow=[0-9]/}"
    CXXFLAGS="${CXXFLAGS/-Wformat-overflow=[0-9]/}"
    # --disable-linker-build-id   https://bugs.archlinux.org/task/34902
    # --disable-__cxa_atexit   https://bugs.archlinux.org/task/50848
    ${srcdir}/${_basedir}/configure \
            --disable-install-libiberty \
            --disable-libssp \
            --disable-libstdcxx-pch \
            --disable-libunwind-exceptions \
            --disable-linker-build-id \
            --disable-nls \
            --disable-werror \
            --disable-__cxa_atexit \
            --enable-checking=release \
            --enable-clocale=gnu \
            --enable-gnu-unique-object \
            --enable-gold \
            --enable-languages=c,c++ \
            --enable-ld=default \
            --enable-lto \
            --enable-plugin \
            --enable-shared \
            --infodir=/usr/share/info \
            --libdir=/usr/lib \
            --libexecdir=/usr/lib \
            --mandir=/usr/share/man \
            --prefix=/usr \
            --target=$_target \
            --with-as=/usr/bin/$_target-as \
            --with-gnu-as \
            --with-gnu-ld \
            --with-ld=/usr/bin/$_target-ld \
            --with-plugin-ld=ld.gold \
            --with-system-zlib \
            --enable-gnu-indirect-function
    
        


    make MAKEINFO=true
}

package() {
    cd "${srcdir}"/gcc-build

    make -j1 DESTDIR="${pkgdir}" install

    rm $pkgdir/usr/lib/libiberty.a

    # Strip debug symbols from libraries; without this, the package size balloons to ~500MB.
    find "${pkgdir}"/usr/lib/gcc -type f -name "*.a" \
        -exec /usr/bin/$_target-strip --strip-debug '{}' \;

    rm -r "${pkgdir}"/usr/share/man/man7
    rm -r "${pkgdir}"/usr/share/info
}