Skip to content

Instantly share code, notes, and snippets.

@menangen
Last active September 22, 2020 20:19
Show Gist options
  • Save menangen/95a3ce32fdf0e26d0d764bdca3b5a473 to your computer and use it in GitHub Desktop.
Save menangen/95a3ce32fdf0e26d0d764bdca3b5a473 to your computer and use it in GitHub Desktop.
Ninja musl LLVM build
lcc = llc
ld = ld.lld
src=..
SYS = /root/src/musl/root
GCCPATH = /usr/lib64/gcc/x86_64-slackware-linux/9.3.0
llcflags = -march=x86-64 -relocation-model=pic -filetype=obj
ldflags = -s $SYS/lib/crt1.o -static -nostdlib --lto-O3 -sysroot $SYS -L $SYS/lib -L $GCCPATH
ldlibflags = -lgcc -lc -lm -ldl -lpthread
clangflags=-static -emit-llvm -std=c11 -nodefaultlibs --sysroot $SYS -isystem $SYS/include -funsigned-char -flto
cvariables=-D_GNU_SOURCE -DCONFIG_VERSION=\"2020-09-06\" -DCONFIG_BIGNUM
rule lcc
command = $lcc $llcflags $in -o $out
rule link
command = $ld $ldflags $ldlibflags $in -o $out
rule cc
command = clang $clangflags $cvariables -c $in -o $out
rule llink
command = llvm-link -v -o $out $in
rule exe
command = clang -lm -ldl -pthread $in libquickjs.llvm.o -o $out
build quickjs.bc: cc $src/quickjs.c
build quickjs-libc.bc: cc $src/quickjs-libc.c
build cutils.bc: cc $src/cutils.c
build libregexp.bc: cc $src/libregexp.c
build libunicode.bc: cc $src/libunicode.c
build libbf.bc: cc $src/libbf.c
build libquickjs.bc: llink quickjs.bc quickjs-libc.bc cutils.bc libregexp.bc libunicode.bc libbf.bc
build libquickjs.llvm.o: lcc libquickjs.bc
build main.bc: cc ../main.c
build main.o: lcc main.bc
build main: link main.o libquickjs.llvm.o
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment