logo

live-bootstrap

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

pass1.sh (3462B)


  1. # SPDX-FileCopyrightText: 2022 Andrius Štikonas <andrius@stikonas.eu>
  2. # SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
  3. # SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space>
  4. # SPDX-License-Identifier: GPL-3.0-or-later
  5. src_prepare() {
  6. default
  7. # This is needed for building with TCC
  8. sed -i 's/ix86_attribute_table\[\]/ix86_attribute_table\[10\]/' gcc/config/i386/i386.c
  9. # Needed for musl
  10. sed -i 's/struct siginfo/siginfo_t/' gcc/config/i386/linux-unwind.h
  11. # Regenerating top level Makefile requires GNU Autogen and hence Guile,
  12. # but it is not essential for building gcc.
  13. rm configure Makefile.in fixincludes/fixincl.x
  14. for dir in intl libcpp; do
  15. cd $dir
  16. rm aclocal.m4
  17. AUTOM4TE=autom4te-2.61 aclocal-1.9 --acdir=../config
  18. cd ..
  19. done
  20. for dir in fixincludes gcc intl libcpp libiberty; do
  21. cd $dir
  22. rm configure
  23. autoconf-2.61
  24. cd ..
  25. done
  26. cd libmudflap
  27. AUTOMAKE=automake-1.10 ACLOCAL=aclocal-1.10 AUTOM4TE=autom4te-2.61 autoreconf-2.61 -f
  28. cd ..
  29. for dir in fixincludes intl libmudflap; do
  30. cd $dir
  31. rm -f config.in
  32. autoheader-2.61
  33. cd ..
  34. done
  35. # Rebuild libtool files
  36. rm config.guess config.sub ltmain.sh
  37. libtoolize
  38. cp ../automake-1.16.3/lib/config.sub .
  39. # Rebuild files generated by GCC build system
  40. rm gcc/c-parse.y libiberty/functions.texi
  41. rm libiberty/obstacks.texi
  42. touch libiberty/obstacks.texi
  43. # Rebuild libcpp/ucnid.h
  44. rm libcpp/ucnid.h
  45. perl libcpp/ucnid.pl < libcpp/ucnid.tab > libcpp/ucnid.h
  46. # Rebuild bison files
  47. # Workaround for bison being too new
  48. sed -i 's/YYLEX/yylex()/' gcc/c-parse.in
  49. rm gcc/c-parse.c
  50. rm gcc/gengtype-yacc.c gcc/gengtype-yacc.h
  51. rm intl/plural.c
  52. # Rebuild flex generated files
  53. rm gcc/gengtype-lex.c
  54. # Remove translation catalogs
  55. rm gcc/po/*.gmo libcpp/po/*.gmo
  56. # Pre-built texinfo files
  57. rm gcc/doc/*.info
  58. # Pre-built man files
  59. rm gcc/doc/*.1 gcc/doc/*.7
  60. }
  61. src_configure() {
  62. mkdir build
  63. cd build
  64. for dir in libiberty libcpp gcc; do
  65. mkdir $dir
  66. cd $dir
  67. CC=tcc CFLAGS="-D HAVE_ALLOCA_H" ../../$dir/configure \
  68. --prefix="${PREFIX}" \
  69. --libdir="${LIBDIR}" \
  70. --build=i386-unknown-linux-musl \
  71. --target=i386-unknown-linux-musl \
  72. --host=i386-unknown-linux-musl \
  73. --disable-shared \
  74. --program-transform-name=
  75. cd ..
  76. done
  77. cd ..
  78. sed -i 's/C_alloca/alloca/g' libiberty/alloca.c
  79. sed -i 's/C_alloca/alloca/g' include/libiberty.h
  80. }
  81. src_compile() {
  82. ln -s . build/build-i386-unknown-linux-musl
  83. mkdir build/gcc/include
  84. ln -s ../../../gcc/gsyslimits.h build/gcc/include/syslimits.h
  85. make -j1 -C build/gcc gengtype-yacc.c
  86. for dir in libiberty libcpp gcc; do
  87. make "${MAKEJOBS}" -C build/$dir LIBGCC2_INCLUDES=-I"${PREFIX}/include" STMP_FIXINC=
  88. done
  89. }
  90. src_install() {
  91. mkdir -p "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.0.4/install-tools/include"
  92. make -C build/gcc install STMP_FIXINC= DESTDIR="${DESTDIR}"
  93. mkdir -p "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.0.4/include"
  94. rm "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.0.4/include/syslimits.h"
  95. cp gcc/gsyslimits.h "${DESTDIR}${LIBDIR}/gcc/i386-unknown-linux-musl/4.0.4/include/syslimits.h"
  96. }