Skip to content

Instantly share code, notes, and snippets.

@equalent
Created August 24, 2022 11:12
Show Gist options
  • Save equalent/0f7df972ba3fadfd6a92efcb1be17a01 to your computer and use it in GitHub Desktop.
Save equalent/0f7df972ba3fadfd6a92efcb1be17a01 to your computer and use it in GitHub Desktop.
Ninja makefile for LuaJIT
script =
tflags =
rule cc
command = cl /nologo /c /O2 /Ob3 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__forceinline -DLUAJIT_DISABLE_JIT -DLUAJIT_NO_UNWIND /showIncludes $tflags $in
deps = msvc
rule link
command = link /nologo /out:$out $in
rule lib
command = lib /nologo /nodefaultlib /out:$out $in
rule minilua
command = minilua.exe $script $tflags -o $out $in
rule buildvm
command = buildvm $tflags -o $out $in
build minilua.obj: cc host\minilua.c
build minilua.exe: link minilua.obj
build host\buildvm_arch.h: minilua vm_x64.dasc | minilua.exe
script = ..\dynasm\dynasm.lua
tflags = -LN -D WIN -D FFI -D P64
tflags = /I "." /I ..\dynasm
build buildvm.obj: cc host\buildvm.c | host\buildvm_arch.h
build buildvm_asm.obj: cc host\buildvm_asm.c | host\buildvm_arch.h
build buildvm_fold.obj: cc host\buildvm_fold.c | host\buildvm_arch.h
build buildvm_lib.obj: cc host\buildvm_lib.c | host\buildvm_arch.h
build buildvm_peobj.obj: cc host\buildvm_peobj.c | host\buildvm_arch.h
build buildvm.exe: link buildvm.obj buildvm_asm.obj buildvm_fold.obj buildvm_lib.obj buildvm_peobj.obj
build lj_vm.obj: buildvm | buildvm.exe
tflags = -m peobj
build lj_bcdef.h: buildvm lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c lib_buffer.c | buildvm.exe
tflags = -m bcdef
build lj_ffdef.h: buildvm lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c lib_buffer.c | buildvm.exe
tflags = -m ffdef
build lj_libdef.h: buildvm lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c lib_buffer.c | buildvm.exe
tflags = -m libdef
build lj_recdef.h: buildvm lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c lib_buffer.c | buildvm.exe
tflags = -m recdef
build jit\vmdef.lua: buildvm lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c lib_buffer.c | buildvm.exe
tflags = -m vmdef
build lj_folddef.h: buildvm lj_opt_fold.c | buildvm.exe
tflags = -m folddef
build ljamalg.obj: cc ljamalg.c
build luajit.lib: lib ljamalg.obj lj_vm.obj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment