summaryrefslogtreecommitdiff
path: root/community/gcc10/PKGBUILD
blob: 4337d9947997de66bc770ca0e9fe3d7f8c89874e (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
# remove tsan (thread sanitizer) plugin, not available for i686
pkgname=(
  $(
    printf '%s\n' "${pkgname[@]}" | \
      grep -vFx 'lib32-gcc-libs'
  )
)
unset -f 'package_lib32-gcc-libs'
eval "$(
  declare -f prepare | \
    sed '
      \,/s/lib64/lib/, d
    '
  declare -f build | \
    sed '
      /configure/ s/--enable-multilib/--disable-multilib/
      /configure/ s,--with-bugurl=https://bugs\.archlinux\.org/,--with-bugurl=https://bugs.archlinux32.org/,
      /configure/ s/;$/ --build=$CHOST;/
    '
  declare -f package_gcc10-libs | \
    sed '
      s/\$pkgname-multilib//
      s@libsanitizer/{a,l,ub,t}san@libsanitizer/{a,l,ub}san@
      /provides=/s/libtsan.so//
      \@/usr/lib32/@ d
    '
  declare -f package_gcc10 | \
    sed '
      s/"lib32-gcc-libs[^"]*"//g
      s@make.*tsan.*install.*@#\0@
    '
)"
eval "$(
  for name in "${pkgname[@]}"; do
    declare -f package_${name} | \
      sed '
        s/$pkgname-multilib//
        s/{,32}//
        \,/lib32/,d
        \,/32/,d
      '
  done
)"

# i486-specific

if [ "${CARCH}" = "i486" ]; then
  # building toolchain (gcc): again, lobtool problems
  # /usr/lib/gcc/i486-pc-linux-gnu/7.3.0/ld: cannot find -lquadmath
  # collect2: error: ld returned 1 exit status
  # libtool: install: error: relink `libgfortran.la' with the above command before installing it
  # make: Leaving directory '/build/gcc/src/gcc-build/i486-pc-linux-gnu/libgfortran'
  # => wrong link order: libgfortran requires libquadmath
  eval "$(
    declare -f package_gcc10-libs | \
      sed '
        /for lib in / s/libgfortran/libquadmath libgfortran/
      '
  )"

  # disable CET (Control Flow instructions endbr32/enbr64)
  eval "$(
    declare -f build | \
      sed '
        s/--enable-cet=auto/--disable-cet/
      '
  )"

else

  # force enable CET (Control Flow instructions endbr32/enbr64)
  eval "$(
    declare -f build | \
      sed '
        s/--enable-cet=auto/--enable-cet/
      '
  )"

fi

makedepends_pentium4=("${makedepends_i686[@]}")

# avoid CHOST double gcc-libs
eval "$(
  declare -f package_gcc10 | \
    sed '
      /rm.*_libdir.*/ a \
        rm  -f "$pkgdir"/usr/lib/gcc/i686-pc-linux-gnu/${pkgver}/libgcc_s.so*;
    '
)"