/builders/qbe-d41d91ddd851798349f37d9bb75ed2718bbe28f5/builder.sh (cbb7986ac8b223ed948b8affa21061f2a82f3926) (2658 bytes) (mode 100644) (type blob)
#XXX not yet in a toochain
src_name=qbe
git_commit=${pkg_name##*-}
slot=$git_commit
git_url0=git://c9x.me/qbe.git
pkg_dir=/run/pkgs/$src_name
src_dir=$src_dir_root/$src_name
rm -Rf $pkg_dir
mkdir -p /run/pkgs
cp -r $src_dir $pkg_dir
PATH_SAVED=$PATH
export PATH="\
/nyan/toolchains/binutils-tinycc/current/bin:\
/nyan/make/current/bin:\
/nyan/git/current/bin:\
$PATH\
"
toolchain_dir=/nyan/toolchains/binutils-tinycc/current
# XXX: we need libgccS with what wants the target glibc.
libgcc_dir=/opt/toolchains/x64/elf/binutils-gcc/current/lib/gcc/x86_64-pc-linux-gnu/13.2.0
target_gnu_triple=$(basename "$(ls -d $toolchain_dir/bin/*-tcc)")
target_gnu_triple=${target_gnu_triple%-tcc}
cd $pkg_dir
if test x$git_commit != x; then
git checkout --force $git_commit
git reset --hard
fi
build_dir=$builds_dir_root/$pkg_name
rm -Rf $build_dir
mkdir -p $build_dir
cd $build_dir
# XXX: we use our own build system.
printf "#define Deftgt T_amd64_sysv\n" >$build_dir/config.h
CPP="$target_gnu_triple-tcc -nostdinc -E -x c"
CC="$target_gnu_triple-tcc -nostdinc -nostdlib -x c -c"
LDBIN="$target_gnu_triple-ld"
src_files=" \
main.c \
util.c \
parse.c \
abi.c \
cfg.c \
mem.c \
ssa.c \
alias.c \
load.c \
copy.c \
fold.c \
simpl.c \
live.c \
spill.c \
rega.c \
emit.c \
\
amd64/targ.c \
amd64/sysv.c \
amd64/isel.c \
amd64/emit.c \
\
arm64/targ.c \
arm64/abi.c \
arm64/isel.c \
arm64/emit.c \
\
rv64/targ.c \
rv64/abi.c \
rv64/isel.c \
rv64/emit.c \
"
mkdir -p $build_dir/amd64
mkdir -p $build_dir/arm64
mkdir -p $build_dir/rv64
for src_file in $src_files
do
cpp=$build_dir/$(dirname $src_file)/$(basename $src_file .c).cpp.c
printf "CPP $src_dir/$src_file-->$cpp\n"
$CPP -o $cpp \
-I$build_dir \
-I/nyan/linux-headers/current/include \
-I/nyan/glibc/current/include \
-I$toolchain_dir/lib/tcc/include \
$src_dir/$src_file &
done
wait
for src_file in $src_files
do
cpp=$build_dir/$(dirname $src_file)/$(basename $src_file .c).cpp.c
o=$build_dir/$(dirname $src_file)/$(basename $src_file .c).o
os="$os $o"
printf "CC $cpp-->$o\n"
$CC -o $o $cpp &
done
wait
# XXX: trying to build a static pie or even a static executable is full of conflicts
# don't try unless with brand new build of the glibc.
printf "LDDBIN qbe\n"
$LDBIN -o $build_dir/qbe \
-s \
--dynamic-linker=/lib64/ld-linux-x86-64.so.2 \
/nyan/glibc/current/lib/crt1.o \
/nyan/glibc/current/lib/crti.o \
$os \
-L/nyan/glibc/current/lib \
-lc \
-L$toolchain_dir/lib/tcc \
-ltcc1 \
/nyan/glibc/current/lib/crtn.o
mkdir -p /nyan/qbe/$slot/bin
cp -f ./qbe //nyan/qbe/$slot/bin
export PATH=$PATH_SAVED
unset PATH_SAVED
unset target_gnu_triple
rm -Rf $pkg_dir $build_dir
Mode |
Type |
Size |
Ref |
File |
100644 |
blob |
5 |
8eba6c8dd4dcaf6166bd22285ed34625f38a84ff |
.gitignore |
100755 |
blob |
1587 |
57fa4264b9ee0ae0a6f678f2527a05d3b22dda78 |
00-bootstrap-build.sh |
100755 |
blob |
848 |
a30f443bf405d56682efe3b4c5d3a19d5f7eb45d |
01-re-bootstrap-build.sh |
100644 |
blob |
2142 |
f19c2d6b293244bb11a3f74ee77c10675cadc7d6 |
INSTALL |
100644 |
blob |
30 |
c9b735fa1332286f4b3f5f81fa10527fd7506b6e |
LICENSE |
040000 |
tree |
- |
ec18cec5a18b12379c13e068413b4ca5d689bf28 |
builders |
100644 |
blob |
1773 |
ef1551089a803bde37e36edc8d61bb819d06f793 |
conf.bootstrap.sh |
100644 |
blob |
479 |
8cc15efe46965ac7750fe304460f5a2b0aa4201c |
conf.sh |
040000 |
tree |
- |
7736496abef80608f40188d3f4425ef67a16375e |
files |
100755 |
blob |
356 |
8fb8be28ac72f7214b59934b9f74a682665f2d32 |
pkg-build |
100644 |
blob |
22800641 |
e9e6291054c857401f6835c728f31541dae4311e |
steam.tar.bz2 |
100644 |
blob |
173 |
2047af328b22f9d146585cd9e759edbc18122250 |
utils.sh |
040000 |
tree |
- |
8e23f551092a35f82b37129dd08c35c4d313c17b |
x64 |
040000 |
tree |
- |
b7a22de7f5cbd97650dd45412ef7d4246e395eb8 |
x86 |
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/sylware/nyanlinux
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/sylware/nyanlinux
Clone this repository using git:
git clone git://git.rocketgit.com/user/sylware/nyanlinux
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main