Skip to content

Instantly share code, notes, and snippets.

@Tosainu
Last active March 21, 2016 03:12
Show Gist options
  • Save Tosainu/a313c313556e76464f93 to your computer and use it in GitHub Desktop.
Save Tosainu/a313c313556e76464f93 to your computer and use it in GitHub Desktop.
Vim build script for Windows.
@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
rem Set Version
set VIM_VER=v7.4.1627
set LUA_VER=5.3.2
set PERL_VER=522
rem Set variables
set CURRENT_DIR=%~dp0
set LUA_DIR=%CURRENT_DIR%lua
set VIM_DIR=%CURRENT_DIR%vim
set XPM_DIR=%CURRENT_DIR%libXpm-win32
set ICONV_DIR=%CURRENT_DIR%libiconv
set VIMTWEAK_DIR=%CURRENT_DIR%vimtweak
set SDK_INCLUDE_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
rem Vim features
set CPU=AMD64
set DEBUG=no
set DIRECTX=yes
set DYNAMIC_LUA=yes
set DYNAMIC_PERL=yes
set FEATURES=HUGE
set GETTEXT=no
set ICONV=yes
set IME=yes
set LUA=..\..\lua
set MBYTE=yes
set OLE=yes
set PERL=C:\Perl64
set WINVER=0x0601
set XPM=..\..\libXpm-win32
rem Update sources
echo - Updating Vim sources...
if not exist %VIM_DIR% (
git clone https://github.com/vim/vim.git %VIM_DIR%
cd %VIM_DIR%
) else (
cd %VIM_DIR%
git pull
)
git checkout %VIM_VER%
echo - Updating Lua sources...
if not exist %LUA_DIR% (
git clone https://github.com/lua/lua.git %LUA_DIR%
cd %LUA_DIR%
) else (
cd %LUA_DIR%
git pull
)
git checkout %LUA_VER%
echo - Updating libXpm sources...
if not exist %XPM_DIR% (
git clone https://github.com/koron/libXpm-win32.git %XPM_DIR%
) else (
cd %XPM_DIR%
git pull
)
echo - Updating libiconv sources...
if not exist %ICONV_DIR% (
git clone https://github.com/koron/libiconv.git %ICONV_DIR%
) else (
cd %ICONV_DIR%
git pull
)
echo - Updating vimtweak sources...
if not exist %VIMTWEAK_DIR% (
git clone https://github.com/mattn/vimtweak.git %VIMTWEAK_DIR%
) else (
cd %VIMTWEAK_DIR%
git pull
)
echo ------------------------------
echo - Building Lua...
cd %LUA_DIR%\src
del lua.c luac.c
cl /nologo /c /MD /MP /Ox /Zi /Fd:lua.pdb /DLUA_BUILD_AS_DLL *.c
link /nologo /DLL /PDB:lua.pdb /IMPLIB:lua%LUA_VER%.lib /OUT:lua%LUA_VER%.dll *.obj
cd ..\
mkdir include
mkdir lib
copy src\*.h include\
copy src\*.lib lib\
copy src\*.dll lib\
echo ------------------------------
echo - Building libXpm...
cd %XPM_DIR%\src
nmake /nologo -f Make_msvc_lib.mak nomsvcrt=1
cd ..\
copy include\X11\xpm.h include\
copy src\*.h include\
mkdir lib
copy src\*.lib lib\
echo ------------------------------
echo - Building libiconv...
cd %ICONV_DIR%\msvc10
set "INCLUDE=%INCLUDE%;%SDK_INCLUDE_DIR%"
nmake /nologo nodebug=1 nomsvcrt=1
echo ------------------------------
echo - Building vimtweak...
cd %VIMTWEAK_DIR%
cl /nologo /c /MD /Ox vimtweak.c
link /nologo /DLL vimtweak.obj user32.lib
echo ------------------------------
cd %VIM_DIR%\src
echo - Building GVim...
nmake /nologo -f Make_mvc.mak GUI=yes
echo - Building Vim...
nmake /nologo -f Make_mvc.mak GUI=no
echo ------------------------------
echo - Copying files...
cd %CURRENT_DIR%
set OUT_DIR=Vim-%VIM_VER%
mkdir %OUT_DIR%
copy %LUA_DIR%\lib\*.dll %OUT_DIR%\
copy %ICONV_DIR%\msvc10\*.dll %OUT_DIR%\
copy %VIMTWEAK_DIR%\*.dll %OUT_DIR%
copy %VIM_DIR%\src\*.exe %OUT_DIR%\
copy %VIM_DIR%\src\xxd\*.exe %OUT_DIR%\
xcopy %VIM_DIR%\runtime %OUT_DIR%\vim74 /e /c /h /i
del %OUT_DIR%\install.exe %OUT_DIR%\uninstal.exe
echo ------------------------------
echo - Cleaning...
cd %VIM_DIR%
git clean -fdx
git checkout .
git checkout master
cd %LUA_DIR%
git clean -fdx
git checkout .
git checkout master
cd %XPM_DIR%
git clean -fdx
git checkout .
cd %ICONV_DIR%
git clean -fdx
git checkout .
cd %VIMTWEAK_DIR%
git clean -fdx
git checkout .
echo ------------------------------
cd %CURRENT_DIR%
echo Done!!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment