factor/build-support/factor.cmd

97 lines
2.4 KiB
Batchfile
Raw Normal View History

@echo off
if not exist Nmakefile goto wrongdir
cl 2>&1 | find "x86" >nul
if not errorlevel 1 goto cl32
cl 2>&1 | find "x64" >nul
if not errorlevel 1 goto cl64
goto nocl
:cl32
echo x86-32 cl.exe detected.
set _target="x86-32"
set _bootimage="boot.winnt-x86.32.image"
goto platformdefined
:cl64
echo x86-64 cl.exe detected.
set _target="x86-64"
set _bootimage="boot.winnt-x86.64.image"
goto platformdefined
:nocl
echo "Unable to detect cl.exe target platform."
goto fail
:platformdefined
if "%1"=="/?" goto usage
if "%1"=="" (
set _bootimage_version="latest"
set _git_branch=master
)
if "%1"=="latest" (
set _bootimage_version="latest"
set _git_branch=master
)
if "%1"=="clean" (
set _bootimage_version="clean"
set _git_branch=clean-winnt-%_target%
)
if not defined _bootimage_version goto usage
echo Updating working copy...
call git pull http://factorcode.org/git/factor.git %_git_branch%
if errorlevel 1 goto fail
echo Building vm...
nmake /nologo /f Nmakefile clean
if errorlevel 1 goto fail
nmake /nologo /f Nmakefile %_target%
if errorlevel 1 goto fail
echo Fetching %_bootimage_version% boot image...
cscript /nologo build-support\http-get.vbs http://factorcode.org/images/%_bootimage_version%/%_bootimage% %_bootimage%
if errorlevel 1 goto fail
echo Bootstrapping...
.\factor.com -i=%_bootimage%
if errorlevel 1 goto fail
echo Copying fresh factor.image to factor.image.fresh
copy factor.image factor.image.fresh
if errorlevel 1 goto fail
echo Build complete.
goto cleanup
:fail
echo Build failed.
goto cleanup
:wrongdir
echo build-support\factor.cmd must be run from the root of the Factor source tree.
goto cleanup
:usage
echo Usage: build-support\factor.cmd [latest/clean]
echo Updates the working copy, cleans and builds the vm using nmake,
echo fetches a boot image, and bootstraps factor.
echo If latest is specified, then the working copy is updated to the
echo upstream "master" branch and the boot image corresponding to the
echo most recent factor build is downloaded. This is the default.
echo If clean is specified, then the working copy is updated to the
echo upstream "clean-winnt-*" branch corresponding to the current
echo platform and the corresponding boot image is downloaded.
goto cleanup
:cleanup
set _target=
set _bootimage=
set _bootimage_version=
set _git_branch=