diff --git a/.gitmodules b/.gitmodules index 459d383..f69523f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "sysa/mescc-tools-patched"] path = sysa/mescc-tools-patched url = https://github.com/oriansj/mescc-tools +[submodule "sysa/tcc-0.9.27"] + path = sysa/tcc-0.9.27 + url = git://repo.or.cz/tinycc.git diff --git a/rootfs.sh b/rootfs.sh index 7f180d9..9f4abf8 100755 --- a/rootfs.sh +++ b/rootfs.sh @@ -36,7 +36,6 @@ ln -s . tmp/after/lib/x86-mes ln -s . tmp/after/lib/linux/x86-mes mkdir tmp/after/include/{mes,gnu,linux,sys,mach} mkdir tmp/after/include/linux/{x86,x86_64} -# put all the kaems for after in cp after.kaem tmp/ cp after.kaem.run tmp/after/kaem.run @@ -61,11 +60,13 @@ cp mes-files/config.h tmp/after/mes/include/mes/ cp mes-files/config.h tmp/after/tcc-mes/include/mes/ mkdir tmp/after/mes/{bin,m2} -# tcc 0.9.26 +# tcc cp tcc.kaem tmp/after/ cp -r tcc-0.9.26p1 tmp/after/ +cp -r tcc-0.9.27 tmp/after/ +touch tmp/after/tcc-0.9.27/config.h +touch tmp/after/tcc-0.9.26p1/config.h pushd tmp/after/tcc-0.9.26p1 -cp ../../../tcc-0.9.26p1-files/config.h . ln -s ../mes/module . ln -s ../mes/mes . ln -s /after/lib x86-mes diff --git a/sysa/tcc-0.9.26p1-files/config.h b/sysa/tcc-0.9.26p1-files/config.h deleted file mode 100644 index e69de29..0000000 diff --git a/sysa/tcc-0.9.27 b/sysa/tcc-0.9.27 new file mode 160000 index 0000000..d348a9a --- /dev/null +++ b/sysa/tcc-0.9.27 @@ -0,0 +1 @@ +Subproject commit d348a9a51d32cece842b7885d27a411436d7887b diff --git a/sysa/tcc.kaem b/sysa/tcc.kaem index 5ecbae0..1316f85 100755 --- a/sysa/tcc.kaem +++ b/sysa/tcc.kaem @@ -83,7 +83,8 @@ mes-tcc -ar cr ${libdir}/libgetopt.a getopt.o cd ../tcc-0.9.26p1 -# boot0 +# boot0 (ref comments here for all boot*) +# compile mes-tcc \ -g \ -v \ @@ -99,7 +100,7 @@ mes-tcc \ -D CONFIG_TCC_CRTPREFIX=\"/after/lib\" \ -D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \ -D CONFIG_TCC_LIBPATHS=\"/after/lib:/after/lib/tcc\" \ - -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/lib/include\" \ + -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/include\" \ -D TCC_LIBGCC=\"/after/lib/libc.a\" \ -D TCC_LIBTCC1=\"libtcc1.a\" \ -D CONFIG_TCCBOOT=1 \ @@ -111,9 +112,11 @@ mes-tcc \ -L . \ -L /after/lib \ tcc.c +# Install cp boot0-tcc /after/bin/ chmod 755 /after/bin/boot0-tcc cd ../tcc-mes +# Recompile libc: crt{1,n,i}, libtcc.a, libc.a boot0-tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o ${libdir}/crt1.o lib/linux/x86-mes-gcc/crt1.c boot0-tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o ${libdir}/crtn.o lib/linux/x86-mes-gcc/crtn.c boot0-tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o ${libdir}/crti.o lib/linux/x86-mes-gcc/crti.c @@ -146,7 +149,7 @@ boot0-tcc \ -D CONFIG_TCC_CRTPREFIX=\"/after/lib\" \ -D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \ -D CONFIG_TCC_LIBPATHS=\"/after/lib:/after/lib/tcc\" \ - -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/lib/include\" \ + -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/include\" \ -D TCC_LIBGCC=\"/after/lib/libc.a\" \ -D TCC_LIBTCC1=\"libtcc1.a\" \ -D CONFIG_TCCBOOT=1 \ @@ -193,7 +196,7 @@ boot1-tcc \ -D CONFIG_TCC_CRTPREFIX=\"/after/lib\" \ -D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \ -D CONFIG_TCC_LIBPATHS=\"/after/lib:/after/lib/tcc\" \ - -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/lib/include\" \ + -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/include\" \ -D TCC_LIBGCC=\"/after/lib/libc.a\" \ -D TCC_LIBTCC1=\"libtcc1.a\" \ -D CONFIG_TCCBOOT=1 \ @@ -240,7 +243,7 @@ boot2-tcc \ -D CONFIG_TCC_CRTPREFIX=\"/after/lib\" \ -D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \ -D CONFIG_TCC_LIBPATHS=\"/after/lib:/after/lib/tcc\" \ - -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/lib/include\" \ + -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/include\" \ -D TCC_LIBGCC=\"/after/lib/libc.a\" \ -D TCC_LIBTCC1=\"libtcc1.a\" \ -D CONFIG_TCCBOOT=1 \ @@ -287,7 +290,7 @@ boot3-tcc \ -D CONFIG_TCC_CRTPREFIX=\"/after/lib\" \ -D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \ -D CONFIG_TCC_LIBPATHS=\"/after/lib:/after/lib/tcc\" \ - -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/lib/include\" \ + -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/include\" \ -D TCC_LIBGCC=\"/after/lib/libc.a\" \ -D TCC_LIBTCC1=\"libtcc1.a\" \ -D CONFIG_TCCBOOT=1 \ @@ -334,7 +337,7 @@ boot4-tcc \ -D CONFIG_TCC_CRTPREFIX=\"/after/lib\" \ -D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \ -D CONFIG_TCC_LIBPATHS=\"/after/lib:/after/lib/tcc\" \ - -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/lib/include\" \ + -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/include\" \ -D TCC_LIBGCC=\"/after/lib/libc.a\" \ -D TCC_LIBTCC1=\"libtcc1.a\" \ -D CONFIG_TCCBOOT=1 \ @@ -371,4 +374,51 @@ chmod 755 /after/bin/tcc tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 lib/posix/getopt.c tcc -ar cr ${libdir}/libgetopt.a getopt.o +# Now compile tcc 0.9.27 +cd ../tcc-0.9.27 + +# Compile the binary +tcc \ + -v \ + -static \ + -o tcc \ + -D TCC_TARGET_I386=1 \ + -D CONFIG_TCCDIR=\"/after/lib/tcc\" \ + -D CONFIG_TCC_CRTPREFIX=\"/after/lib\" \ + -D CONFIG_TCC_ELFINTERP=\"/mes/loader\" \ + -D CONFIG_TCC_LIBPATHS=\"/after/lib:/after/lib/tcc\" \ + -D CONFIG_TCC_SYSINCLUDEPATHS=\"/after/include\" \ + -D TCC_LIBGCC=\"/after/lib/libc.a\" \ + -D CONFIG_TCC_STATIC=1 \ + -D CONFIG_USE_LIBGCC=1 \ + -D TCC_VERSION=\"0.9.27\" \ + -D ONE_SOURCE=1 \ + tcc.c + +# Install the binary +cp tcc /after/bin/tcc +chmod 755 /after/bin/tcc + +# Test +tcc -version + +# Recompile libc +cd ../tcc-mes +# crt{1,n,i}.o +tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o ${libdir}/crt1.o lib/linux/x86-mes-gcc/crt1.c +tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o ${libdir}/crtn.o lib/linux/x86-mes-gcc/crtn.c +tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o ${libdir}/crti.o lib/linux/x86-mes-gcc/crti.c +# libtcc1.a +tcc -c -D HAVE_CONFIG_H=1 -D HAVE_FLOAT=1 -D HAVE_LONG_LONG=1 -I include -I include/linux/x86 lib/libtcc1.c +tcc -ar cr ${libdir}/tcc/libtcc1.a libtcc1.o +# libc.a +tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o unified-libc-1.o unified-libc-1.c +tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o unified-libc-2.o unified-libc-2.c +tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 -o unified-libc-3.o unified-libc-3.c +tcc -ar cr ${libdir}/libc+gnu.a unified-libc-1.o unified-libc-2.o unified-libc-3.o +cp ${libdir}/libc+gnu.a ${libdir}/libc.a +# libgetopt.a +tcc -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86 lib/posix/getopt.c +tcc -ar cr ${libdir}/libgetopt.a getopt.o + cd ..