| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | @echo off | 
					
						
							|  |  |  | setlocal | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-11 01:13:22 -05:00
										 |  |  | : Check which branch we are on, or just assume master if we are not in a git repository | 
					
						
							| 
									
										
										
										
											2017-12-09 02:42:55 -05:00
										 |  |  | for /f %%z in ('git rev-parse --abbrev-ref HEAD') do set GIT_BRANCH=%%z | 
					
						
							| 
									
										
										
										
											2018-03-11 06:46:24 -04:00
										 |  |  | if not defined GIT_BRANCH ( | 
					
						
							|  |  |  |     set GIT_BRANCH=master | 
					
						
							| 
									
										
										
										
											2018-03-11 01:13:22 -05:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2017-12-09 02:42:55 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | if "%1"=="/?" ( | 
					
						
							|  |  |  |     goto usage | 
					
						
							|  |  |  | ) else if "%1"=="" ( | 
					
						
							| 
									
										
										
										
											2017-12-09 02:42:55 -05:00
										 |  |  |     set _bootimage_version=%GIT_BRANCH% | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | ) else if "%1"=="latest" ( | 
					
						
							| 
									
										
										
										
											2017-12-09 02:42:55 -05:00
										 |  |  |     set _bootimage_version=%GIT_BRANCH% | 
					
						
							| 
									
										
										
										
											2016-03-29 21:44:32 -04:00
										 |  |  | ) else if "%1"=="update" ( | 
					
						
							| 
									
										
										
										
											2017-12-09 02:42:55 -05:00
										 |  |  |     set _bootimage_version=%GIT_BRANCH% | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | ) else if "%1"=="clean" ( | 
					
						
							|  |  |  |     set _bootimage_version=clean | 
					
						
							|  |  |  | ) else goto usage | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if not exist Nmakefile goto wrongdir | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | call cl 2>&1 | find "x86" >nul | 
					
						
							|  |  |  | if not errorlevel 1 ( | 
					
						
							|  |  |  |     echo x86-32 cl.exe detected. | 
					
						
							|  |  |  |     set _target=x86-32 | 
					
						
							|  |  |  |     set _bootimage=boot.windows-x86.32.image | 
					
						
							|  |  |  | ) else ( | 
					
						
							|  |  |  |     call cl 2>&1 | find "x64" >nul | 
					
						
							|  |  |  |     if not errorlevel 1 ( | 
					
						
							|  |  |  |         echo x86-64 cl.exe detected. | 
					
						
							|  |  |  |         set _target=x86-64 | 
					
						
							|  |  |  |         set _bootimage=boot.windows-x86.64.image | 
					
						
							|  |  |  |     ) else goto nocl | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo Deleting staging images from temp/... | 
					
						
							|  |  |  | del temp\staging.*.image | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-09 00:32:45 -04:00
										 |  |  | echo Updating working copy from %GIT_BRANCH%... | 
					
						
							| 
									
										
										
										
											2020-01-04 14:47:13 -05:00
										 |  |  | call git pull https://github.com/factor/factor %GIT_BRANCH% | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | if errorlevel 1 goto fail | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo Building vm... | 
					
						
							|  |  |  | nmake /nologo /f Nmakefile clean | 
					
						
							|  |  |  | if errorlevel 1 goto fail | 
					
						
							| 
									
										
										
										
											2017-09-09 00:32:45 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | nmake /nologo /f Nmakefile %_target% | 
					
						
							|  |  |  | if errorlevel 1 goto fail | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo Fetching %_bootimage_version% boot image... | 
					
						
							| 
									
										
										
										
											2017-09-09 00:32:45 -04:00
										 |  |  | set boot_image_url=http://downloads.factorcode.org/images/%GIT_BRANCH%/%_bootimage% %_bootimage% | 
					
						
							|  |  |  | echo URL: %boot_image_url% | 
					
						
							|  |  |  | cscript /nologo misc\http-get.vbs %boot_image_url% %_bootimage% | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | 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 :EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :fail | 
					
						
							|  |  |  | echo Build failed. | 
					
						
							|  |  |  | goto :EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :wrongdir | 
					
						
							| 
									
										
										
										
											2016-03-15 06:16:33 -04:00
										 |  |  | echo build.cmd must be run from the root of the Factor source tree. | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | goto :EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :nocl | 
					
						
							|  |  |  | echo Unable to detect cl.exe target platform. | 
					
						
							|  |  |  | echo Make sure you're running within the Visual Studio or Windows SDK environment. | 
					
						
							|  |  |  | goto :EOF | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | :usage | 
					
						
							| 
									
										
										
										
											2017-09-09 00:32:45 -04:00
										 |  |  | echo Usage: build.cmd | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | echo     Updates the working copy, cleans and builds the vm using nmake, | 
					
						
							|  |  |  | echo     fetches a boot image, and bootstraps factor. | 
					
						
							| 
									
										
										
										
											2017-09-09 00:32:45 -04:00
										 |  |  | echo     The branch that bootstraps is the one that is checked out locally. | 
					
						
							| 
									
										
										
										
											2015-08-05 12:38:25 -04:00
										 |  |  | goto :EOF |