logo

live-bootstrap

Mirror of <https://github.com/fosslinux/live-bootstrap>

pass1.sh (8653B)


  1. # SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
  2. # SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
  3. # SPDX-FileCopyrightText: 2021-23 fosslinux <fosslinux@aussies.space>
  4. # SPDX-License-Identifier: GPL-3.0-or-later
  5. src_prepare() {
  6. default
  7. # Generated using gperf
  8. rm gcc/cp/cfns.h
  9. # Regenerating top level Makefile requires GNU Autogen and hence Guile,
  10. # but it is not essential for building gcc.
  11. rm configure Makefile.in fixincludes/fixincl.x
  12. # Remove unused generated files
  13. rm libgo/aclocal.m4 libgo/configure libgo/Makefile.in
  14. rm gcc/config/avr/t-multilib
  15. rm gcc/config/mep/intrinsics.h gcc/config/mep/intrinsics.md \
  16. gcc/config/mep/mep-intrin.h
  17. rm gcc/config/arm/arm_neon.h
  18. rm gcc/testsuite/gcc.target/x86_64/abi/test_passing_integers.c \
  19. gcc/testsuite/gcc.target/x86_64/abi/test_3_element_struct_and_unions.c \
  20. gcc/testsuite/gcc.target/x86_64/abi/test_passing_floats.c \
  21. gcc/testsuite/gcc.target/x86_64/abi/test_basic_returning.c
  22. rm gcc/testsuite/go.test/test/bench/go1/jsondata_test.go \
  23. gcc/testsuite/go.test/test/bench/shootout/mandelbrot.txt
  24. rm gcc/testsuite/go.test/test/cmplxdivide1.go
  25. find zlib -name "*.obj" -delete
  26. rm zlib/contrib/puff/zeros.raw zlib/contrib/blast/test.pk \
  27. zlib/contrib/dotzlib/DotZLib.chm
  28. find libjava -name "*.class" -delete
  29. find libjava -type f -name "*.jar" -delete
  30. find libjava -name "*.h" -exec grep -l "DO NOT EDIT THIS FILE" {} \; | xargs rm
  31. rm libjava/classpath/gnu/java/lang/CharData.java \
  32. libjava/classpath/gnu/java/rmi/dgc/DGCImpl_Skel.java \
  33. libjava/classpath/gnu/java/rmi/dgc/DGCImpl_Stub.java \
  34. libjava/classpath/gnu/java/rmi/registry/RegistryImpl_Skel.java \
  35. libjava/classpath/gnu/java/rmi/registry/RegistryImpl_Stub.java
  36. rm libjava/classpath/resource/gnu/java/locale/*.properties \
  37. libjava/classpath/resource/java/text/*.properties \
  38. libjava/classpath/resource/java/util/*.properties
  39. rm libjava/include/java-chardecomp.h \
  40. libjava/include/java-chartables.h
  41. rm -r libjava/testsuite/libjava.cni \
  42. libjava/testsuite/libjava.jvmti
  43. rm boehm-gc/MacProjects.sit.hqx
  44. find fixincludes/tests -name "*.h" -delete
  45. find . -name "*.pdf" -delete
  46. rm -r libstdc++-v3/doc/html
  47. rm libgfortran/generated/*.F90
  48. rm -r libgo/go/debug/elf/testdata \
  49. libgo/go/debug/macho/testdata \
  50. libgo/go/debug/pe/testdata \
  51. libgo/go/debug/dwarf/testdata
  52. rm libgo/go/regexp/syntax/perl_groups.go
  53. rm libgo/go/strconv/isprint.go
  54. # Regenerating these would require TCL
  55. rm libjava/sources.am libjava/Makefile.in
  56. # Part generated, part human-written, but unused
  57. rm libgcc/config/sh/lib1funcs.S libgcc/config/sh/lib1funcs-4-300.S
  58. rm libjava/classpath/java/util/TimeZone.java
  59. rm libjava/gcj/javaprims.h
  60. # xz-style blobs
  61. rm boehm-gc/cord/de_win.ICO
  62. # Regenerate aclocal.m4 files
  63. # grep "generated automatically by aclocal" */aclocal.m4 -l | sed -e 's#/aclocal.m4##' | tr "\n" " " | sed -e 's/ $/\n/'
  64. for dir in intl libcpp libdecnumber; do
  65. cd $dir
  66. rm aclocal.m4
  67. AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 aclocal-1.11 --acdir=../config
  68. cd ..
  69. done
  70. cd gcc
  71. rm aclocal.m4
  72. AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 aclocal-1.11 --acdir=../config
  73. cd ..
  74. cd fixincludes
  75. rm aclocal.m4
  76. AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 aclocal-1.11 --acdir=../gcc
  77. cd ..
  78. for dir in boehm-gc libffi libgfortran libgomp libitm libjava libmudflap libobjc libquadmath libssp lto-plugin zlib libjava/classpath libjava/libltdl; do
  79. pushd "$dir"
  80. rm aclocal.m4
  81. AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 aclocal-1.11
  82. popd
  83. done
  84. cd libstdc++-v3
  85. ACLOCAL=aclocal-1.11 AUTOMAKE=automake-1.11 AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 autoreconf-2.64 -fi
  86. cd ..
  87. # Regenerate configure scripts
  88. # Find all folders with configure script and rebuild them. At the moment we exclude boehm-gc folder due to
  89. # an error but we don't use that directory anyway (it's only needed for Objective C)
  90. for dir in $(find . -mindepth 2 -maxdepth 2 -name configure.ac | sed 's#/configure.ac##' | grep -v -x './libgo' | tr "\n" " " | sed -e 's/ $/\n/' -e 's/^boehm-gc //'); do
  91. pushd "$dir"
  92. rm configure
  93. autoconf-2.64 || autoconf-2.64
  94. popd
  95. done
  96. # Regenerate Makefile.in
  97. # Find all folders with Makefile.am and rebuild them. At the moment we exclude boehm-gc folder.
  98. for dir in $(find . -mindepth 2 -maxdepth 2 -name Makefile.am | sed 's#/Makefile.am##' | grep -v -x -e './libgo' -e './libjava' | tr "\n" " " | sed -e 's/ $/\n/' -e 's/^boehm-gc //'); do
  99. pushd "$dir"
  100. rm Makefile.in
  101. AUTOCONF=autoconf-2.64 AUTOM4TE=autom4te-2.64 automake-1.11 --add-missing
  102. popd
  103. done
  104. for dir in libdecnumber libcpp libiberty gcc; do
  105. cd $dir
  106. rm -f config.in
  107. autoheader-2.64
  108. cd ..
  109. done
  110. # Rebuild dependencies in libiberty/Makefile.in
  111. pushd libiberty
  112. ./configure --enable-maintainer-mode
  113. make maint-deps
  114. popd
  115. # Rebuild libtool files
  116. rm config.guess config.sub ltmain.sh
  117. rm libjava/libltdl/missing
  118. libtoolize -i
  119. cp "${PREFIX}/share/automake-1.15/config.sub" .
  120. for dir in libjava/libltdl libjava/classpath libgo/config; do
  121. pushd "$dir"
  122. libtoolize -i
  123. popd
  124. done
  125. # Workaround for bison being too new
  126. rm intl/plural.c
  127. # Rebuild flex generated files
  128. rm gcc/gengtype-lex.c
  129. # Regenerate crc table in libiberty/crc32.c
  130. pushd libiberty
  131. sed -n '/^ #include <stdio.h>/,/^ \}$/p' crc32.c > crcgen.c
  132. gcc -o crcgen crcgen.c
  133. sed '/crc_v3\.txt/{n; q}' crc32.c > crc32.c.new
  134. ./crcgen >> crc32.c.new
  135. sed '1,/^};$/d' crc32.c >> crc32.c.new
  136. mv crc32.c.new crc32.c
  137. popd
  138. # Regenerate decDPD.h
  139. rm libdecnumber/decDPD.h
  140. gcc -std=c99 -o decDPD_generate decDPD_generate.c
  141. cp decDPD.h.preamble libdecnumber/decDPD.h
  142. ./decDPD_generate >> libdecnumber/decDPD.h
  143. # Remove translation catalogs
  144. find . -name '*.gmo' -delete
  145. # Pre-built texinfo files
  146. rm libiberty/functions.texi
  147. find . -name '*.info' -delete
  148. # Pre-built manpages
  149. find . -name '*.[1-9]' -delete
  150. }
  151. src_configure() {
  152. mkdir build
  153. cd build
  154. for dir in libiberty libcpp libdecnumber gcc libgcc libstdc++-v3; do
  155. mkdir $dir
  156. cd $dir
  157. ../../$dir/configure \
  158. --prefix="${PREFIX}" \
  159. --libdir="${LIBDIR}" \
  160. --build=i386-unknown-linux-musl \
  161. --target=i386-unknown-linux-musl \
  162. --host=i386-unknown-linux-musl \
  163. --disable-shared \
  164. --program-transform-name= \
  165. --enable-languages=c,c++ \
  166. --disable-sjlj-exceptions \
  167. --with-system-zlib
  168. cd ..
  169. done
  170. cd ..
  171. }
  172. src_compile() {
  173. ln -s . build/build-i386-unknown-linux-musl
  174. for dir in libiberty libcpp libdecnumber gcc; do
  175. # We have makeinfo now but it is not happy with gcc .info files, so skip it
  176. make "${MAKEJOBS}" -C build/$dir LIBGCC2_INCLUDES=-I"${PREFIX}/include" \
  177. STMP_FIXINC= GMPLIBS="-lmpc -lmpfr -lgmp" MAKEINFO=true
  178. done
  179. # host_subdir is necessary because we have slightly different build directory layout
  180. make "${MAKEJOBS}" -C build/libgcc PATH="${PATH}:../gcc" CC=../gcc/xgcc \
  181. host_subdir=build CFLAGS="-I../gcc/include -I/${PREFIX}/include"
  182. make "${MAKEJOBS}" -C build/libstdc++-v3 PATH="${PATH}:${PWD}/build/gcc" \
  183. CXXFLAGS="-I${PWD}/build/gcc/include -I ${PREFIX}/include"
  184. }
  185. src_install() {
  186. make -C build/gcc install STMP_FIXINC= DESTDIR="${DESTDIR}" MAKEINFO=true
  187. make -C build/libgcc install DESTDIR="${DESTDIR}" host_subdir=build
  188. make -C build/libstdc++-v3 install DESTDIR="${DESTDIR}"
  189. ln -s gcc "${DESTDIR}${PREFIX}/bin/cc"
  190. cp gcc/gsyslimits.h "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.7.4/include/syslimits.h"
  191. # Very strange mis-versoning error
  192. mkdir -p "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.7.4/include/"
  193. mv "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.0.4/include/"* "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.7.4/include/"
  194. rmdir "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.0.4/include"
  195. mv "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.0.4/"* "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.7.4/"
  196. }