mirror of
https://github.com/mirror/make.git
synced 2024-12-28 22:00:33 +08:00
62da1c45e5
* README.git: Clarify that these methods are lightly tested. * build_w32.bat: Don't support any config step: fail if not completed. Move the config steps into bootstrap.bat. Don't print compile lines by default and add a --verbose option to show them. * bootstrap.bat: Ensure we have curl and sed before we do anything. Pull the latest necessary files from gnulib. Create a convert.sed script that can update the various template files, and update Basic.mk, config.h.W32, and gmk-default.h. * tests/run_make_tests.pl: Remove CRLF rather than using chop. If we run perl in Git for Bash it seems to handle newlines differently. * tests/scripts/features/temp_stdin: Remove the make copy and close STDIN so we can delete the temp file on Windows. * .gitignore: Ignore the convert.sed script.
85 lines
2.7 KiB
Batchfile
85 lines
2.7 KiB
Batchfile
@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
|