Created
July 11, 2017 11:43
-
-
Save fkaa/c06a4515d83414da288de616509d81ea to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@rem Script to build LuaJIT with MSVC. | |
@rem Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h | |
@rem | |
@rem Either open a "Visual Studio .NET Command Prompt" | |
@rem (Note that the Express Edition does not contain an x64 compiler) | |
@rem -or- | |
@rem Open a "Windows SDK Command Shell" and set the compiler environment: | |
@rem setenv /release /x86 | |
@rem -or- | |
@rem setenv /release /x64 | |
@rem | |
@rem Then cd to this directory and run this script. | |
@if not defined INCLUDE goto :FAIL | |
@setlocal | |
@set LJCOMPILE=cl /nologo /c /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__declspec(dllexport)__inline | |
@set LJLINK=link /nologo | |
@set LJMT=mt /nologo | |
@set LJLIB=lib /nologo /nodefaultlib | |
@set DASMDIR=..\dynasm | |
@set DASM=%DASMDIR%\dynasm.lua | |
@set LJDLLNAME=lua51.dll | |
@set LJLIBNAME=lua51.lib | |
@set ALL_LIB=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 | |
%LJCOMPILE% host\minilua.c | |
@if errorlevel 1 goto :BAD | |
%LJLINK% /out:minilua.exe minilua.obj | |
@if errorlevel 1 goto :BAD | |
if exist minilua.exe.manifest^ | |
%LJMT% -manifest minilua.exe.manifest -outputresource:minilua.exe | |
@set DASMFLAGS=-D WIN -D JIT -D FFI -D P64 | |
@set LJARCH=x64 | |
@minilua | |
@if errorlevel 8 goto :X64 | |
@set DASMFLAGS=-D WIN -D JIT -D FFI | |
@set LJARCH=x86 | |
:X64 | |
minilua %DASM% -LN %DASMFLAGS% -o host\buildvm_arch.h vm_x86.dasc | |
@if errorlevel 1 goto :BAD | |
%LJCOMPILE% /I "." /I %DASMDIR% host\buildvm*.c | |
@if errorlevel 1 goto :BAD | |
%LJLINK% /out:buildvm.exe buildvm*.obj | |
@if errorlevel 1 goto :BAD | |
if exist buildvm.exe.manifest^ | |
%LJMT% -manifest buildvm.exe.manifest -outputresource:buildvm.exe | |
buildvm -m peobj -o lj_vm.obj | |
@if errorlevel 1 goto :BAD | |
buildvm -m bcdef -o lj_bcdef.h %ALL_LIB% | |
@if errorlevel 1 goto :BAD | |
buildvm -m ffdef -o lj_ffdef.h %ALL_LIB% | |
@if errorlevel 1 goto :BAD | |
buildvm -m libdef -o lj_libdef.h %ALL_LIB% | |
@if errorlevel 1 goto :BAD | |
buildvm -m recdef -o lj_recdef.h %ALL_LIB% | |
@if errorlevel 1 goto :BAD | |
buildvm -m vmdef -o jit\vmdef.lua %ALL_LIB% | |
@if errorlevel 1 goto :BAD | |
buildvm -m folddef -o lj_folddef.h lj_opt_fold.c | |
@if errorlevel 1 goto :BAD | |
@if "%1" neq "debug" goto :NODEBUG | |
@shift | |
@set LJCOMPILE=%LJCOMPILE% /Zi | |
@set LJLINK=%LJLINK% /debug | |
:NODEBUG | |
@if "%1"=="amalg" goto :AMALGDLL | |
@if "%1"=="static" goto :STATIC | |
%LJCOMPILE% /MD /DLUA_BUILD_AS_DLL lj_*.c lib_*.c | |
@if errorlevel 1 goto :BAD | |
%LJLINK% /DLL /out:%LJDLLNAME% lj_*.obj lib_*.obj | |
@if errorlevel 1 goto :BAD | |
@goto :MTDLL | |
:STATIC | |
%LJCOMPILE% lj_*.c lib_*.c | |
@if errorlevel 1 goto :BAD | |
%LJLIB% /OUT:%LJLIBNAME% lj_*.obj lib_*.obj | |
@if errorlevel 1 goto :BAD | |
@goto :MTDLL | |
:AMALGDLL | |
%LJCOMPILE% /MD /DLUA_BUILD_AS_DLL ljamalg.c | |
@if errorlevel 1 goto :BAD | |
%LJLINK% /DLL /out:%LJDLLNAME% ljamalg.obj lj_vm.obj | |
@if errorlevel 1 goto :BAD | |
:MTDLL | |
if exist %LJDLLNAME%.manifest^ | |
%LJMT% -manifest %LJDLLNAME%.manifest -outputresource:%LJDLLNAME%;2 | |
%LJCOMPILE% luajit.c | |
@if errorlevel 1 goto :BAD | |
%LJLINK% /out:luajit.exe luajit.obj %LJLIBNAME% | |
@if errorlevel 1 goto :BAD | |
if exist luajit.exe.manifest^ | |
%LJMT% -manifest luajit.exe.manifest -outputresource:luajit.exe | |
@del *.obj *.manifest minilua.exe buildvm.exe | |
@del host\buildvm_arch.h | |
@del lj_bcdef.h lj_ffdef.h lj_libdef.h lj_recdef.h lj_folddef.h | |
@echo. | |
@echo === Successfully built LuaJIT for Windows/%LJARCH% === | |
@goto :END | |
:BAD | |
@echo. | |
@echo ******************************************************* | |
@echo *** Build FAILED -- Please check the error messages *** | |
@echo ******************************************************* | |
@goto :END | |
:FAIL | |
@echo You must open a "Visual Studio .NET Command Prompt" to run this script | |
:END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment