| @echo off |
| :: Copyright (C) 2018-2022 Free Software Foundation, Inc. |
| :: This file is part of GNU Make. |
| :: |
| :: GNU Make is free software; you can redistribute it and/or modify it under |
| :: the terms of the GNU General Public License as published by the Free |
| :: Software Foundation; either version 3 of the License, or (at your option) |
| :: any later version. |
| :: |
| :: GNU Make is distributed in the hope that it will be useful, but WITHOUT |
| :: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| :: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for. |
| :: more details. |
| :: |
| :: You should have received a copy of the GNU General Public License along |
| :: with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| setlocal |
| set "svurl=https://git.savannah.gnu.org/cgit" |
| set "gnuliburl=%svurl%/gnulib.git/plain" |
| |
| where curl >nul 2>&1 |
| if ERRORLEVEL 1 ( |
| echo Cannot find curl: it must be installed for bootstrap |
| exit /b 1 |
| ) |
| |
| where sed >nul 2>&1 |
| if ERRORLEVEL 1 ( |
| echo Cannot find sed: it must be installed for bootstrap |
| echo Hint: you can use the sed provided in the Git for Windows install |
| exit /b 1 |
| ) |
| |
| if exist lib goto Downloads |
| mkdir lib |
| if ERRORLEVEL 1 exit /b 1 |
| |
| :Downloads |
| echo -- Downloading Gnulib modules |
| call :Download lib getloadavg.c |
| call :Download lib intprops.h |
| call :Download lib intprops-internal.h |
| |
| echo -- Configuring the workspace |
| copy /Y gl\lib\*.* lib > nul |
| |
| :: Create a sed script to convert templates |
| if exist convert.sed del /Q convert.sed |
| echo s,%%PACKAGE%%,make,g > convert.sed |
| if ERRORLEVEL 1 goto Failed |
| sed -n "s/^AC_INIT(\[GNU.make\],\[\([0-9.]*\)\].*/s,%%VERSION%%,\1,g/p" configure.ac >> convert.sed |
| if ERRORLEVEL 1 goto Failed |
| sed -z -e s/\\\n//g -e "s/[ \t][ \t]*/ /g" -e "s, [^ ]*\.h,,g" -e "s,src/,$(src),g" -e "s,lib/,$(lib),g" Makefile.am | sed -n "s/^\([A-Za-z0-9]*\)_SRCS *= *\(.*\)/s,%%\1_SOURCES%%,\2,/p" >> convert.sed |
| if ERRORLEVEL 1 goto Failed |
| |
| echo - Creating Basic.mk |
| call sed -f convert.sed Basic.mk.template > Basic.mk |
| if ERRORLEVEL 1 goto Failed |
| echo - Creating src\config.h.W32 |
| call sed -f convert.sed src\config.h.W32.template > src\config.h.W32 |
| if ERRORLEVEL 1 goto Failed |
| |
| echo - Creating src\gmk-default.h |
| echo static const char *const GUILE_module_defn = ^" \ > src\gmk-default.h |
| call sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\\/" src\gmk-default.scm >> src\gmk-default.h |
| if ERRORLEVEL 1 goto Failed |
| echo ^";>> src\gmk-default.h |
| |
| echo. |
| echo Done. Run build_w32.bat to build GNU make. |
| goto :EOF |
| |
| :Download |
| if exist "%1\%2" goto :EOF |
| echo - Downloading %1\%2 |
| curl -sS -o "%1\%2" "%gnuliburl%/%1/%2" |
| if ERRORLEVEL 1 exit /b 1 |
| goto :EOF |
| |
| :Failed |
| echo *** Bootstrap failed. |
| echo Resolve the issue, or use the configured source in the release tarball |
| exit /b 1 |