summaryrefslogtreecommitdiff
path: root/core/gcc/PKGBUILD
blob: cf97f188e830a536793f80e0d3840173826d1066 (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
# 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=$CARCH;/
    '
  declare -f package_gcc-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_gcc | \
    sed '
      s/"lib32-gcc-libs[^"]*"//g
      s@make.*tsan.*install@#\0@
    '
  declare -f package_gcc-ada | \
    sed '
      \,cd .*/32/libada,{
        N
        d
      }
    '
)"
eval "$(
  for name in "${pkgname[@]}"; do
    declare -f package_${name} | \
      sed '
        s/$pkgname-multilib//
        s/{,32}//
        \,/lib32/,d
        \,/32/,d
      '
  done
)"

# i486-specific

# disable doxygen documentation
makedepends=(${makedepends[@]//doxygen/})
makedepends_i686+=('doxygen')

if [ "${CARCH}" = "i486" ]; then
  eval "$(
    declare -f build | \
      sed '
        /make.*doc-man-doxygen/d
      '
  )"

  eval "$(
    declare -f package_gcc | \
      sed '
        /make.*doc-man-doxygen/d
        /make.*doc-install-man/d
      '
  )"
fi

# no ADA
makedepends=(${makedepends[@]//gcc-ada/})
makedepends_i686+=('gcc-ada')

if [ "${CARCH}" = "i486" ]; then
  package_gcc-ada() {
    touch "$pkgdir/this-is-a-dummy-package"
  }

  eval "$(
    declare -f build | \
      sed '
        /enable-languages/ s/,ada//
      '
  )"

  eval "$(
    declare -f package_gcc | \
      sed '
        s/,gnat-style,gnat_rm,gnat_ugn//
      '
  )"

  # 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_gcc-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/
      '
  )"

fi