mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-22 11:06:32 +01:00
Adapt tcc-0.9.26's step to use pnut-exe instead of mes
This commit is contained in:
parent
ba90de8d85
commit
15a64feac3
12 changed files with 120 additions and 50 deletions
|
|
@ -28,17 +28,31 @@ cd build
|
|||
ungz --file ${DISTFILES}/${TCC_TAR}.tar.gz --output ${TCC_TAR}.tar
|
||||
ungz --file ${DISTFILES}/${MES_PKG}.tar.gz --output ${MES_PKG}.tar
|
||||
untar --non-strict --file ${TCC_TAR}.tar
|
||||
|
||||
simple-patch ${TCC_PKG}/tcctools.c \
|
||||
../simple-patches/remove-fileopen.before ../simple-patches/remove-fileopen.after
|
||||
simple-patch ${TCC_PKG}/tcctools.c \
|
||||
../simple-patches/addback-fileopen.before ../simple-patches/addback-fileopen.after
|
||||
|
||||
# Patches to get tcc to compile with pnut, these are reverted after tcc-pnut is built
|
||||
simple-patch ${TCC_PKG}/tccpp.c \
|
||||
../simple-patches/array_sizeof.before ../simple-patches/array_sizeof.after
|
||||
simple-patch ${TCC_PKG}/tccgen.c \
|
||||
../simple-patches/fix_stack_64_bit_operands_on_32_bit.before ../simple-patches/fix_stack_64_bit_operands_on_32_bit.after
|
||||
simple-patch ${TCC_PKG}/tccgen.c \
|
||||
../simple-patches/float_negation.before ../simple-patches/float_negation.after
|
||||
simple-patch ${TCC_PKG}/libtcc.c \
|
||||
../simple-patches/sscanf_TCC_VERSION.before ../simple-patches/sscanf_TCC_VERSION.after
|
||||
simple-patch ${TCC_PKG}/tcc.h \
|
||||
../simple-patches/undefine_TCC_IS_NATIVE.before ../simple-patches/undefine_TCC_IS_NATIVE.after
|
||||
|
||||
untar --non-strict --file ${MES_PKG}.tar
|
||||
|
||||
# Prepare Mes header files
|
||||
|
||||
# Create config.h
|
||||
catm ${MES_PKG}/include/mes/config.h
|
||||
catm ${TCC_PKG}/config.h
|
||||
cd ${TCC_PKG}
|
||||
|
||||
if match ${ARCH} x86; then
|
||||
MES_ARCH=x86
|
||||
|
|
@ -56,43 +70,63 @@ if match ${ARCH} riscv64; then
|
|||
HAVE_LONG_LONG=1
|
||||
fi
|
||||
|
||||
mkdir ${MES_PKG}/include/arch
|
||||
cp ${MES_PKG}/include/linux/${MES_ARCH}/kernel-stat.h ${MES_PKG}/include/arch/kernel-stat.h
|
||||
cp ${MES_PKG}/include/linux/${MES_ARCH}/signal.h ${MES_PKG}/include/arch/signal.h
|
||||
cp ${MES_PKG}/include/linux/${MES_ARCH}/syscall.h ${MES_PKG}/include/arch/syscall.h
|
||||
|
||||
${MES} --no-auto-compile -e main ${BINDIR}/mescc.scm -- \
|
||||
-S \
|
||||
-o tcc.s \
|
||||
-I ${INCDIR} \
|
||||
-D BOOTSTRAP=1 \
|
||||
-D HAVE_LONG_LONG=${HAVE_LONG_LONG} \
|
||||
-I . \
|
||||
-D TCC_TARGET_${TCC_TARGET_ARCH}=1 \
|
||||
-D inline= \
|
||||
-D CONFIG_TCCDIR=\"${LIBDIR}/tcc\" \
|
||||
-D CONFIG_SYSROOT=\"/\" \
|
||||
-D CONFIG_TCC_CRTPREFIX=\"${LIBDIR}\" \
|
||||
-D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \
|
||||
-D CONFIG_TCC_SYSINCLUDEPATHS=\"${PREFIX}/include/mes\" \
|
||||
-D TCC_LIBGCC=\"${LIBDIR}/libc.a\" \
|
||||
-D CONFIG_TCC_LIBTCC1_MES=0 \
|
||||
-D CONFIG_TCCBOOT=1 \
|
||||
-D CONFIG_TCC_STATIC=1 \
|
||||
-D CONFIG_USE_LIBGCC=1 \
|
||||
-D TCC_VERSION=\"0.9.26\" \
|
||||
-D ONE_SOURCE=1 \
|
||||
tcc.c
|
||||
${MES} --no-auto-compile -e main ${BINDIR}/mescc.scm -- \
|
||||
--base-address 0x08048000 \
|
||||
-o tcc-mes \
|
||||
-L ${LIBDIR} \
|
||||
tcc.s \
|
||||
-l c+tcc
|
||||
cp tcc-mes ${BINDIR}/
|
||||
chmod 755 ${BINDIR}/tcc-mes
|
||||
# Unpack pnut's portable libc, only used to bootstrap tcc-pnut
|
||||
|
||||
# test tcc-mes
|
||||
tcc-mes -version
|
||||
untar --file ${DISTFILES}/${PNUT_PKG}.tar
|
||||
|
||||
# Here we go!
|
||||
|
||||
cd ${TCC_PKG}
|
||||
|
||||
pnut \
|
||||
-I ../pnut-laurent-small-fixes-for-TCC/portable_libc/include/ \
|
||||
-D BOOTSTRAP=1 \
|
||||
-D HAVE_LONG_LONG=0 \
|
||||
-D TCC_TARGET_${TCC_TARGET_ARCH}=1 \
|
||||
-D CONFIG_SYSROOT=\"/\" \
|
||||
-D CONFIG_TCC_CRTPREFIX=\"${LIBDIR}\" \
|
||||
-D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \
|
||||
-D CONFIG_TCC_SYSINCLUDEPATHS=\"${PREFIX}/include/mes\" \
|
||||
-D TCC_LIBGCC=\"${LIBDIR}/libc.a\" \
|
||||
-D CONFIG_TCC_LIBTCC1_MES=0 \
|
||||
-D CONFIG_TCCBOOT=1 \
|
||||
-D CONFIG_TCC_STATIC=1 \
|
||||
-D CONFIG_USE_LIBGCC=1 \
|
||||
-D TCC_VERSION=\"0.9.26\" \
|
||||
-D ONE_SOURCE=1 \
|
||||
-D CONFIG_TCCDIR=\"${LIBDIR}/tcc\" \
|
||||
-D __intptr_t_defined=1 \
|
||||
tcc.c \
|
||||
../pnut-laurent-small-fixes-for-TCC/portable_libc/libc.c \
|
||||
-o tcc-pnut
|
||||
|
||||
cp tcc-pnut ${BINDIR}/
|
||||
chmod 755 ${BINDIR}/tcc-pnut
|
||||
|
||||
# test tcc-pnut
|
||||
tcc-pnut -version
|
||||
|
||||
cd ..
|
||||
|
||||
# Revert patches
|
||||
simple-patch ${TCC_PKG}/tccpp.c \
|
||||
../simple-patches/array_sizeof.after ../simple-patches/array_sizeof.before
|
||||
simple-patch ${TCC_PKG}/tccgen.c \
|
||||
../simple-patches/fix_stack_64_bit_operands_on_32_bit.after ../simple-patches/fix_stack_64_bit_operands_on_32_bit.before
|
||||
simple-patch ${TCC_PKG}/tccgen.c \
|
||||
../simple-patches/float_negation.after ../simple-patches/float_negation.before
|
||||
simple-patch ${TCC_PKG}/libtcc.c \
|
||||
../simple-patches/sscanf_TCC_VERSION.after ../simple-patches/sscanf_TCC_VERSION.before
|
||||
simple-patch ${TCC_PKG}/tcc.h \
|
||||
../simple-patches/undefine_TCC_IS_NATIVE.after ../simple-patches/undefine_TCC_IS_NATIVE.before
|
||||
|
||||
# Recompile the mes C library
|
||||
cd ../${MES_PKG}
|
||||
cd ${MES_PKG}
|
||||
|
||||
# Create unified libc file
|
||||
cd lib
|
||||
|
|
@ -100,41 +134,41 @@ catm ../unified-libc.c ctype/isalnum.c ctype/isalpha.c ctype/isascii.c ctype/isc
|
|||
cd ..
|
||||
|
||||
# crt1.o
|
||||
tcc-mes -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -o ${LIBDIR}/crt1.o lib/linux/${MES_ARCH}-mes-gcc/crt1.c
|
||||
tcc-pnut -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -o ${LIBDIR}/crt1.o lib/linux/${MES_ARCH}-mes-gcc/crt1.c
|
||||
|
||||
catm ${LIBDIR}/crtn.o
|
||||
catm ${LIBDIR}/crti.o
|
||||
if match ${ARCH} x86; then
|
||||
# crtn.o
|
||||
tcc-mes -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -o ${LIBDIR}/crtn.o lib/linux/${MES_ARCH}-mes-gcc/crtn.c
|
||||
tcc-pnut -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -o ${LIBDIR}/crtn.o lib/linux/${MES_ARCH}-mes-gcc/crtn.c
|
||||
|
||||
# crti.o
|
||||
tcc-mes -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -o ${LIBDIR}/crti.o lib/linux/${MES_ARCH}-mes-gcc/crti.c
|
||||
tcc-pnut -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -o ${LIBDIR}/crti.o lib/linux/${MES_ARCH}-mes-gcc/crti.c
|
||||
fi
|
||||
|
||||
# libc+gcc.a
|
||||
tcc-mes -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -o unified-libc.o unified-libc.c
|
||||
tcc-mes -ar cr ${LIBDIR}/libc.a unified-libc.o
|
||||
tcc-pnut -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} -I include/arch -o unified-libc.o unified-libc.c
|
||||
tcc-pnut -ar cr ${LIBDIR}/libc.a unified-libc.o
|
||||
|
||||
# libtcc1.a
|
||||
mkdir ${LIBDIR}/tcc
|
||||
tcc-mes -c -D HAVE_CONFIG_H=1 -D HAVE_LONG_LONG=1 -D HAVE_FLOAT=1 -I include -I include/linux/${MES_ARCH} -o libtcc1.o lib/libtcc1.c
|
||||
tcc-pnut -c -D HAVE_CONFIG_H=1 -D HAVE_LONG_LONG=1 -D HAVE_FLOAT=1 -I include -I include/linux/${MES_ARCH} -o libtcc1.o lib/libtcc1.c
|
||||
if match ${ARCH} riscv64; then
|
||||
tcc-mes -c -D HAVE_CONFIG_H=1 -D HAVE_LONG_LONG=1 -D HAVE_FLOAT=1 -I include -I include/linux/${MES_ARCH} -o lib-arm64.o ../${TCC_PKG}/lib/lib-arm64.c
|
||||
tcc-mes -ar cr ${LIBDIR}/tcc/libtcc1.a libtcc1.o lib-arm64.o
|
||||
tcc-pnut -c -D HAVE_CONFIG_H=1 -D HAVE_LONG_LONG=1 -D HAVE_FLOAT=1 -I include -I include/linux/${MES_ARCH} -o lib-arm64.o ../${TCC_PKG}/lib/lib-arm64.c
|
||||
tcc-pnut -ar cr ${LIBDIR}/tcc/libtcc1.a libtcc1.o lib-arm64.o
|
||||
else
|
||||
tcc-mes -ar cr ${LIBDIR}/tcc/libtcc1.a libtcc1.o
|
||||
tcc-pnut -ar cr ${LIBDIR}/tcc/libtcc1.a libtcc1.o
|
||||
fi
|
||||
|
||||
# libgetopt.a
|
||||
tcc-mes -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} lib/posix/getopt.c
|
||||
tcc-mes -ar cr ${LIBDIR}/libgetopt.a getopt.o
|
||||
tcc-pnut -c -D HAVE_CONFIG_H=1 -I include -I include/linux/${MES_ARCH} lib/posix/getopt.c
|
||||
tcc-pnut -ar cr ${LIBDIR}/libgetopt.a getopt.o
|
||||
|
||||
cd ../${TCC_PKG}
|
||||
|
||||
# boot0 (ref comments here for all boot*)
|
||||
# compile
|
||||
tcc-mes \
|
||||
tcc-pnut \
|
||||
-g \
|
||||
-v \
|
||||
-static \
|
||||
|
|
@ -307,10 +341,12 @@ tcc -ar cr ${LIBDIR}/libgetopt.a getopt.o
|
|||
|
||||
cd ../..
|
||||
|
||||
sha256sum /usr/bin/tcc-pnut
|
||||
|
||||
# Checksums
|
||||
if match x${UPDATE_CHECKSUMS} xTrue; then
|
||||
sha256sum -o ${pkg}.${ARCH}.checksums \
|
||||
/usr/bin/tcc-mes \
|
||||
/usr/bin/tcc-pnut \
|
||||
/usr/bin/tcc-boot0 \
|
||||
/usr/bin/tcc-boot1 \
|
||||
/usr/bin/tcc \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue