2006-02-12 06:16:04 +08:00
|
|
|
@echo off
|
2013-04-26 01:41:53 +08:00
|
|
|
rem Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
2006-02-12 06:16:04 +08:00
|
|
|
rem This file is part of GNU Make.
|
2007-07-05 03:35:15 +08:00
|
|
|
rem
|
|
|
|
rem GNU Make is free software; you can redistribute it and/or modify it under
|
|
|
|
rem the terms of the GNU General Public License as published by the Free
|
|
|
|
rem Software Foundation; either version 3 of the License, or (at your option)
|
|
|
|
rem any later version.
|
|
|
|
rem
|
|
|
|
rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
|
|
|
|
rem more details.
|
|
|
|
rem
|
|
|
|
rem You should have received a copy of the GNU General Public License along
|
|
|
|
rem with this program. If not, see <http://www.gnu.org/licenses/>.
|
2006-02-12 03:02:21 +08:00
|
|
|
|
2013-04-26 01:41:53 +08:00
|
|
|
if "%1" == "-h" GoTo Usage
|
|
|
|
if "%1" == "--help" GoTo Usage
|
|
|
|
if not exist config.h.W32.template GoTo NotSCM
|
|
|
|
sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > config.h.W32.sed
|
2007-10-10 12:32:15 +08:00
|
|
|
echo s,%%PACKAGE%%,make,g >> config.h.W32.sed
|
|
|
|
sed -f config.h.W32.sed config.h.W32.template > config.h.W32
|
2013-04-26 01:41:53 +08:00
|
|
|
echo static const char *const GUILE_module_defn = ^" \> gmk-default.h
|
|
|
|
sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\/" gmk-default.scm >> gmk-default.h
|
|
|
|
echo ^";>> gmk-default.h
|
2013-01-13 08:31:13 +08:00
|
|
|
:NotSCM
|
2013-05-17 18:34:24 +08:00
|
|
|
copy config.h.W32 config.h
|
2012-01-29 04:28:31 +08:00
|
|
|
|
|
|
|
rem Guile configuration
|
|
|
|
set GUILECFLAGS=
|
|
|
|
set GUILELIBS=
|
2013-04-26 01:41:53 +08:00
|
|
|
set NOGUILE=
|
|
|
|
set OPT=-O2
|
|
|
|
set COMPILER=
|
2012-01-29 04:28:31 +08:00
|
|
|
set PKGMSC=
|
2013-04-26 01:41:53 +08:00
|
|
|
:ParseSW
|
|
|
|
if "%1" == "--debug" GoTo SetOpt
|
2012-01-29 04:28:31 +08:00
|
|
|
if "%1" == "--without-guile" GoTo NoGuile
|
2013-04-26 01:41:53 +08:00
|
|
|
if "%1" == "gcc" GoTo SetCC
|
|
|
|
if "%1" == "" GoTo ChkGuile
|
|
|
|
:SetOpt
|
|
|
|
set OPT=-O0
|
|
|
|
shift
|
|
|
|
GoTo ParseSW
|
|
|
|
:NoGuile
|
|
|
|
set NOGUILE=Y
|
|
|
|
echo "Building without Guile"
|
|
|
|
shift
|
|
|
|
GoTo ParseSW
|
|
|
|
:SetCC
|
|
|
|
set COMPILER=gcc
|
|
|
|
echo "Building with GCC"
|
|
|
|
shift
|
|
|
|
GoTo ParseSW
|
2012-01-29 04:28:31 +08:00
|
|
|
rem Build with Guile is supported only on NT and later versions
|
2013-04-26 01:41:53 +08:00
|
|
|
:ChkGuile
|
|
|
|
if "%NOGUILE%" == "Y" GoTo GuileDone
|
2012-01-29 04:28:31 +08:00
|
|
|
if not "%OS%" == "Windows_NT" GoTo NoGuile
|
|
|
|
pkg-config --help > guile.tmp 2> NUL
|
|
|
|
if ERRORLEVEL 1 GoTo NoPkgCfg
|
|
|
|
echo "Checking for Guile 2.0"
|
2013-04-26 01:41:53 +08:00
|
|
|
if not "%COMPILER%" == "gcc" set PKGMSC=--msvc-syntax
|
2012-01-29 04:28:31 +08:00
|
|
|
pkg-config --cflags --short-errors "guile-2.0" > guile.tmp
|
|
|
|
if not ERRORLEVEL 1 set /P GUILECFLAGS= < guile.tmp
|
|
|
|
pkg-config --libs --static --short-errors %PKGMSC% "guile-2.0" > guile.tmp
|
|
|
|
if not ERRORLEVEL 1 set /P GUILELIBS= < guile.tmp
|
|
|
|
if not "%GUILECFLAGS%" == "" GoTo GuileDone
|
|
|
|
echo "Checking for Guile 1.8"
|
|
|
|
pkg-config --cflags --short-errors "guile-1.8" > guile.tmp
|
|
|
|
if not ERRORLEVEL 1 set /P GUILECFLAGS= < guile.tmp
|
|
|
|
pkg-config --libs --static --short-errors %PKGMSC% "guile-1.8" > guile.tmp
|
|
|
|
if not ERRORLEVEL 1 set /P GUILELIBS= < guile.tmp
|
|
|
|
if not "%GUILECFLAGS%" == "" GoTo GuileDone
|
|
|
|
echo "No Guile found, building without Guile"
|
2013-04-26 01:41:53 +08:00
|
|
|
GoTo GuileDone
|
2012-01-29 04:28:31 +08:00
|
|
|
:NoPkgCfg
|
|
|
|
echo "pkg-config not found, building without Guile"
|
|
|
|
:GuileDone
|
|
|
|
if not "%GUILECFLAGS%" == "" echo "Guile found, building with Guile"
|
|
|
|
if not "%GUILECFLAGS%" == "" set GUILECFLAGS=%GUILECFLAGS% -DHAVE_GUILE
|
2013-04-26 01:41:53 +08:00
|
|
|
if "%COMPILER%" == "gcc" if "%OPT%" == "-O0" echo "Building without compiler optimizations"
|
1996-07-20 05:43:36 +08:00
|
|
|
cd w32\subproc
|
2013-04-26 01:41:53 +08:00
|
|
|
echo.
|
2006-02-12 06:16:04 +08:00
|
|
|
echo "Creating the subproc library"
|
2013-04-26 01:41:53 +08:00
|
|
|
%ComSpec% /c build.bat
|
1996-07-20 05:43:36 +08:00
|
|
|
cd ..\..
|
2006-02-12 06:16:04 +08:00
|
|
|
|
2005-08-08 13:08:00 +08:00
|
|
|
if exist link.dbg del link.dbg
|
|
|
|
if exist link.rel del link.rel
|
2013-04-26 01:41:53 +08:00
|
|
|
echo.
|
|
|
|
echo "Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8"
|
|
|
|
if "%COMPILER%" == "gcc" GoTo GCCBuild
|
2005-08-08 13:08:00 +08:00
|
|
|
set make=gnumake
|
1996-07-20 05:43:36 +08:00
|
|
|
echo on
|
|
|
|
if not exist .\WinDebug\nul mkdir .\WinDebug
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D TIVOLI /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c variable.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\variable.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c rule.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\rule.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c remote-stub.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\remote-stub.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c commands.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\commands.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c file.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\file.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getloadavg.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\getloadavg.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c default.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\default.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c signame.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\signame.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c expand.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\expand.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c dir.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\dir.obj >>link.dbg
|
2012-01-29 04:28:31 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od %GUILECFLAGS% /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c main.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\main.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt1.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\getopt1.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c job.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\job.obj >>link.dbg
|
2013-09-12 16:07:52 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c output.c
|
|
|
|
echo WinDebug\output.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c read.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\read.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c version.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\version.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c getopt.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\getopt.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c arscan.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\arscan.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c hash.c
|
2002-11-19 12:39:15 +08:00
|
|
|
echo WinDebug\hash.obj >>link.dbg
|
2006-02-12 03:02:21 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c strcache.c
|
|
|
|
echo WinDebug\strcache.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c remake.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\remake.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c misc.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\misc.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c ar.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\ar.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c function.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\function.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c vpath.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\vpath.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c implicit.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\implicit.obj >>link.dbg
|
2013-04-26 01:41:53 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c loadapi.c
|
|
|
|
echo WinDebug\loadapi.obj >>link.dbg
|
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c load.c
|
|
|
|
echo WinDebug\load.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\w32\compat\dirent.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\dirent.obj >>link.dbg
|
Support --output-sync on MS-Windows.
w32/compat/posixfcn.c: New file, with emulations of Posix
functions and Posix functionality for MS-Windows.
w32/subproc/sub_proc.c: Include io.h.
(process_noinherit): New function, forces a file descriptor to not
be inherited by child processes.
(process_easy): Accept two additional arguments, and use them to
set up the standard output and standard error handles of the child
process.
w32/include/sub_proc.h (process_easy): Adjust prototype.
(process_noinherit): Add prototype.
read.c [WINDOWS32]: Include windows.h and sub_proc.h.
makeint.h (LOCALEDIR) [WINDOWS32}: Define to NULL if not
defined. This is needed because the MS-Windows build doesn't have
a canonical place for LOCALEDIR.
(WIN32_LEAN_AND_MEAN) [WINDOWS32]: Define, to avoid getting from
windows.h header too much stuff that could conflict with the code.
main.c <sync_mutex>: New static variable.
<switches>: Add support for "--sync-mutex" switch.
(decode_output_sync_flags): Decode the --sync-mutex= switch.
(prepare_mutex_handle_string) [WINDOWS32]: New function.
(main): Add "output-sync" to .FEATURES.
job.h (CLOSE_ON_EXEC) [WINDOWS32]: Define to call
process_noinherit.
(F_GETFD, F_SETLKW, F_WRLCK, F_UNLCK, struct flock) [WINDOWS32]:
New macros.
(RECORD_SYNC_MUTEX): New macro, a no-op for Posix platforms.
(sync_handle_t): New typedef.
job.c <sync_handle>: Change type to sync_handle_t.
(FD_NOT_EMPTY): Seek to the file's end. Suggested by Frank
Heckenbach <f.heckenbach@fh-soft.de>.
(pump_from_tmp_fd) [WINDOWS32]: Switch to_fd to binary mode for
the duration of this function, and then change back before
returning.
(start_job_command) [WINDOWS32]: Support output_sync mode on
MS-Windows. Use a system-wide mutex instead of locking
stdout/stderr. Call process_easy with two additional arguments:
child->outfd and child->errfd.
(exec_command) [WINDOWS32]: Pass two additional arguments, both
-1, to process_easy, to adjust for the changed function signature.
function.c (windows32_openpipe) [WINDOWS32]: This function now
returns an int, which is -1 if it fails and zero otherwise. It
also calls 'error' instead of 'fatal', to avoid exiting
prematurely.
(func_shell_base) [WINDOWS32]: Call perror_with_name if
windows32_openpipe fails, now that it always returns. This avoids
a compiler warning that error_prefix is not used in the MS-Windows
build.
config.h.W32.template (OUTPUT_SYNC): Define.
build_w32.bat: Add w32/compat/posixfcn.c to compilation and
linking commands.
From Frank Heckenbach <f.heckenbach@fh-soft.de>:
job.c (sync_output): Don't discard the output if
acquire_semaphore fails; instead, dump the output unsynchronized.
2013-04-27 19:20:49 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\w32\compat\posixfcn.c
|
|
|
|
echo WinDebug\posixfcn.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\glob\glob.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\glob.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\glob\fnmatch.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\fnmatch.obj >>link.dbg
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c .\w32\pathstuff.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinDebug\pathstuff.obj >>link.dbg
|
2013-10-24 00:28:38 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /Zi /YX /Od %GUILECFLAGS% /I . /I glob /I w32/include /D _DEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinDebug/ /Fp.\WinDebug/%make%.pch /Fo.\WinDebug/ /Fd.\WinDebug/%make%.pdb /c guile.c
|
2012-01-29 04:28:31 +08:00
|
|
|
echo WinDebug\guile.obj >>link.dbg
|
|
|
|
:LinkDbg
|
1996-07-20 05:43:36 +08:00
|
|
|
echo off
|
1997-04-07 15:21:16 +08:00
|
|
|
echo "Linking WinDebug/%make%.exe"
|
2013-09-12 16:07:52 +08:00
|
|
|
rem link.exe %GUILELIBS% kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /OUT:.\WinDebug/%make%.exe .\WinDebug/variable.obj .\WinDebug/rule.obj .\WinDebug/remote-stub.obj .\WinDebug/commands.obj .\WinDebug/file.obj .\WinDebug/getloadavg.obj .\WinDebug/default.obj .\WinDebug/signame.obj .\WinDebug/expand.obj .\WinDebug/dir.obj .\WinDebug/main.obj .\WinDebug/getopt1.obj .\WinDebug/job.obj .\WinDebug/output.obj .\WinDebug/read.obj .\WinDebug/version.obj .\WinDebug/getopt.obj .\WinDebug/arscan.obj .\WinDebug/remake.obj .\WinDebug/hash.obj .\WinDebug/strcache.obj .\WinDebug/misc.obj .\WinDebug/ar.obj .\WinDebug/function.obj .\WinDebug/vpath.obj .\WinDebug/implicit.obj .\WinDebug/dirent.obj .\WinDebug/glob.obj .\WinDebug/fnmatch.obj .\WinDebug/pathstuff.obj
|
2012-01-29 04:28:31 +08:00
|
|
|
echo %GUILELIBS% kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\windebug\subproc.lib >>link.dbg
|
2010-07-13 04:32:59 +08:00
|
|
|
link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:yes /PDB:.\WinDebug/%make%.pdb /DEBUG /OUT:.\WinDebug/%make%.exe @link.dbg
|
1997-04-07 15:21:16 +08:00
|
|
|
if not exist .\WinDebug/%make%.exe echo "WinDebug build failed"
|
|
|
|
if exist .\WinDebug/%make%.exe echo "WinDebug build succeeded!"
|
1996-07-20 05:43:36 +08:00
|
|
|
if not exist .\WinRel\nul mkdir .\WinRel
|
|
|
|
echo on
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /D TIVOLI /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c variable.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\variable.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c rule.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\rule.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c remote-stub.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\remote-stub.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c commands.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\commands.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c file.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\file.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getloadavg.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\getloadavg.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c default.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\default.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c signame.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\signame.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c expand.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\expand.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c dir.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\dir.obj >>link.rel
|
2012-01-29 04:28:31 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 %GUILECFLAGS% /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c main.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\main.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt1.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\getopt1.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c job.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\job.obj >>link.rel
|
2013-09-12 16:07:52 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c output.c
|
|
|
|
echo WinRel\output.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c read.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\read.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c version.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\version.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c getopt.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\getopt.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c arscan.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\arscan.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c remake.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\remake.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c hash.c
|
2002-11-19 12:39:15 +08:00
|
|
|
echo WinRel\hash.obj >>link.rel
|
2006-02-12 03:02:21 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c strcache.c
|
|
|
|
echo WinRel\strcache.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c misc.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\misc.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c ar.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\ar.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c function.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\function.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c vpath.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\vpath.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c implicit.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\implicit.obj >>link.rel
|
2013-04-26 01:41:53 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c loadapi.c
|
|
|
|
echo WinRel\loadapi.obj >>link.rel
|
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c load.c
|
|
|
|
echo WinRel\load.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\w32\compat\dirent.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\dirent.obj >>link.rel
|
Support --output-sync on MS-Windows.
w32/compat/posixfcn.c: New file, with emulations of Posix
functions and Posix functionality for MS-Windows.
w32/subproc/sub_proc.c: Include io.h.
(process_noinherit): New function, forces a file descriptor to not
be inherited by child processes.
(process_easy): Accept two additional arguments, and use them to
set up the standard output and standard error handles of the child
process.
w32/include/sub_proc.h (process_easy): Adjust prototype.
(process_noinherit): Add prototype.
read.c [WINDOWS32]: Include windows.h and sub_proc.h.
makeint.h (LOCALEDIR) [WINDOWS32}: Define to NULL if not
defined. This is needed because the MS-Windows build doesn't have
a canonical place for LOCALEDIR.
(WIN32_LEAN_AND_MEAN) [WINDOWS32]: Define, to avoid getting from
windows.h header too much stuff that could conflict with the code.
main.c <sync_mutex>: New static variable.
<switches>: Add support for "--sync-mutex" switch.
(decode_output_sync_flags): Decode the --sync-mutex= switch.
(prepare_mutex_handle_string) [WINDOWS32]: New function.
(main): Add "output-sync" to .FEATURES.
job.h (CLOSE_ON_EXEC) [WINDOWS32]: Define to call
process_noinherit.
(F_GETFD, F_SETLKW, F_WRLCK, F_UNLCK, struct flock) [WINDOWS32]:
New macros.
(RECORD_SYNC_MUTEX): New macro, a no-op for Posix platforms.
(sync_handle_t): New typedef.
job.c <sync_handle>: Change type to sync_handle_t.
(FD_NOT_EMPTY): Seek to the file's end. Suggested by Frank
Heckenbach <f.heckenbach@fh-soft.de>.
(pump_from_tmp_fd) [WINDOWS32]: Switch to_fd to binary mode for
the duration of this function, and then change back before
returning.
(start_job_command) [WINDOWS32]: Support output_sync mode on
MS-Windows. Use a system-wide mutex instead of locking
stdout/stderr. Call process_easy with two additional arguments:
child->outfd and child->errfd.
(exec_command) [WINDOWS32]: Pass two additional arguments, both
-1, to process_easy, to adjust for the changed function signature.
function.c (windows32_openpipe) [WINDOWS32]: This function now
returns an int, which is -1 if it fails and zero otherwise. It
also calls 'error' instead of 'fatal', to avoid exiting
prematurely.
(func_shell_base) [WINDOWS32]: Call perror_with_name if
windows32_openpipe fails, now that it always returns. This avoids
a compiler warning that error_prefix is not used in the MS-Windows
build.
config.h.W32.template (OUTPUT_SYNC): Define.
build_w32.bat: Add w32/compat/posixfcn.c to compilation and
linking commands.
From Frank Heckenbach <f.heckenbach@fh-soft.de>:
job.c (sync_output): Don't discard the output if
acquire_semaphore fails; instead, dump the output unsynchronized.
2013-04-27 19:20:49 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\w32\compat\posixfcn.c
|
|
|
|
echo WinRel\posixfcn.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\glob\glob.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\glob.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\glob\fnmatch.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\fnmatch.obj >>link.rel
|
2005-07-04 11:50:59 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c .\w32\pathstuff.c
|
1996-07-20 05:43:36 +08:00
|
|
|
echo WinRel\pathstuff.obj >>link.rel
|
2013-10-24 00:28:38 +08:00
|
|
|
cl.exe /nologo /MT /W4 /GX /YX /O2 %GUILECFLAGS% /I . /I glob /I w32/include /D NDEBUG /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR.\WinRel/ /Fp.\WinRel/%make%.pch /Fo.\WinRel/ /c guile.c
|
2012-01-29 04:28:31 +08:00
|
|
|
echo WinRel\guile.obj >>link.rel
|
|
|
|
:LinkRel
|
1996-07-20 05:43:36 +08:00
|
|
|
echo off
|
1997-04-07 15:21:16 +08:00
|
|
|
echo "Linking WinRel/%make%.exe"
|
2013-09-12 16:07:52 +08:00
|
|
|
rem link.exe %GUILELIBS% kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /OUT:.\WinRel/%make%.exe .\WinRel/variable.obj .\WinRel/rule.obj .\WinRel/remote-stub.obj .\WinRel/commands.obj .\WinRel/file.obj .\WinRel/getloadavg.obj .\WinRel/default.obj .\WinRel/signame.obj .\WinRel/expand.obj .\WinRel/dir.obj .\WinRel/main.obj .\WinRel/getopt1.obj .\WinRel/job.obj .\WinRel/output.obj .\WinRel/read.obj .\WinRel/version.obj .\WinRel/getopt.obj .\WinRel/arscan.obj .\WinRel/remake.obj .\WinRel/misc.obj .\WinRel/hash.obj .\WinRel/strcache.obj .\WinRel/ar.obj .\WinRel/function.obj .\WinRel/vpath.obj .\WinRel/implicit.obj .\WinRel/dirent.obj .\WinRel/glob.obj .\WinRel/fnmatch.obj .\WinRel/pathstuff.obj
|
2012-01-29 04:28:31 +08:00
|
|
|
echo %GUILELIBS% kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib w32\subproc\winrel\subproc.lib >>link.rel
|
2010-07-13 04:32:59 +08:00
|
|
|
link.exe /NOLOGO /SUBSYSTEM:console /INCREMENTAL:no /PDB:.\WinRel/%make%.pdb /OUT:.\WinRel/%make%.exe @link.rel
|
1997-04-07 15:21:16 +08:00
|
|
|
if not exist .\WinRel/%make%.exe echo "WinRel build failed"
|
|
|
|
if exist .\WinRel/%make%.exe echo "WinRel build succeeded!"
|
2005-08-08 13:08:00 +08:00
|
|
|
set make=
|
|
|
|
GoTo BuildEnd
|
|
|
|
:GCCBuild
|
|
|
|
echo on
|
2013-04-26 01:41:53 +08:00
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c variable.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c rule.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remote-stub.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c commands.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c file.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getloadavg.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c default.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c signame.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c expand.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c dir.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H %GUILECFLAGS% -c main.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt1.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c job.c
|
2013-09-12 16:07:52 +08:00
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c output.c
|
2013-04-26 01:41:53 +08:00
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c read.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c version.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c getopt.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c arscan.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c remake.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c hash.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c strcache.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c misc.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ar.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c function.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c vpath.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c implicit.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c loadapi.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c load.c
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/glob.c -o glob.o
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./glob/fnmatch.c -o fnmatch.o
|
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/pathstuff.c -o pathstuff.o
|
Support --output-sync on MS-Windows.
w32/compat/posixfcn.c: New file, with emulations of Posix
functions and Posix functionality for MS-Windows.
w32/subproc/sub_proc.c: Include io.h.
(process_noinherit): New function, forces a file descriptor to not
be inherited by child processes.
(process_easy): Accept two additional arguments, and use them to
set up the standard output and standard error handles of the child
process.
w32/include/sub_proc.h (process_easy): Adjust prototype.
(process_noinherit): Add prototype.
read.c [WINDOWS32]: Include windows.h and sub_proc.h.
makeint.h (LOCALEDIR) [WINDOWS32}: Define to NULL if not
defined. This is needed because the MS-Windows build doesn't have
a canonical place for LOCALEDIR.
(WIN32_LEAN_AND_MEAN) [WINDOWS32]: Define, to avoid getting from
windows.h header too much stuff that could conflict with the code.
main.c <sync_mutex>: New static variable.
<switches>: Add support for "--sync-mutex" switch.
(decode_output_sync_flags): Decode the --sync-mutex= switch.
(prepare_mutex_handle_string) [WINDOWS32]: New function.
(main): Add "output-sync" to .FEATURES.
job.h (CLOSE_ON_EXEC) [WINDOWS32]: Define to call
process_noinherit.
(F_GETFD, F_SETLKW, F_WRLCK, F_UNLCK, struct flock) [WINDOWS32]:
New macros.
(RECORD_SYNC_MUTEX): New macro, a no-op for Posix platforms.
(sync_handle_t): New typedef.
job.c <sync_handle>: Change type to sync_handle_t.
(FD_NOT_EMPTY): Seek to the file's end. Suggested by Frank
Heckenbach <f.heckenbach@fh-soft.de>.
(pump_from_tmp_fd) [WINDOWS32]: Switch to_fd to binary mode for
the duration of this function, and then change back before
returning.
(start_job_command) [WINDOWS32]: Support output_sync mode on
MS-Windows. Use a system-wide mutex instead of locking
stdout/stderr. Call process_easy with two additional arguments:
child->outfd and child->errfd.
(exec_command) [WINDOWS32]: Pass two additional arguments, both
-1, to process_easy, to adjust for the changed function signature.
function.c (windows32_openpipe) [WINDOWS32]: This function now
returns an int, which is -1 if it fails and zero otherwise. It
also calls 'error' instead of 'fatal', to avoid exiting
prematurely.
(func_shell_base) [WINDOWS32]: Call perror_with_name if
windows32_openpipe fails, now that it always returns. This avoids
a compiler warning that error_prefix is not used in the MS-Windows
build.
config.h.W32.template (OUTPUT_SYNC): Define.
build_w32.bat: Add w32/compat/posixfcn.c to compilation and
linking commands.
From Frank Heckenbach <f.heckenbach@fh-soft.de>:
job.c (sync_output): Don't discard the output if
acquire_semaphore fails; instead, dump the output unsynchronized.
2013-04-27 19:20:49 +08:00
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c ./w32/compat/posixfcn.c -o posixfcn.o
|
2013-04-26 01:41:53 +08:00
|
|
|
gcc -mthreads -Wall -gdwarf-2 -g3 %OPT% %GUILECFLAGS% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H -c guile.c
|
2012-01-29 04:28:31 +08:00
|
|
|
:LinkGCC
|
2013-06-22 22:32:46 +08:00
|
|
|
@echo off
|
2013-05-03 21:09:12 +08:00
|
|
|
Rem The version NN of libgnumake-NN.dll.a should be bumped whenever
|
|
|
|
Rem the API changes in binary-incompatible manner.
|
2012-01-29 04:28:31 +08:00
|
|
|
@echo on
|
2013-10-24 00:28:38 +08:00
|
|
|
gcc -mthreads -gdwarf-2 -g3 -o gnumake.exe variable.o rule.o remote-stub.o commands.o file.o getloadavg.o default.o signame.o expand.o dir.o main.o getopt1.o guile.o job.o output.o read.o version.o getopt.o arscan.o remake.o misc.o hash.o strcache.o ar.o function.o vpath.o implicit.o loadapi.o load.o glob.o fnmatch.o pathstuff.o posixfcn.o w32_misc.o sub_proc.o w32err.o %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -Wl,--out-implib=libgnumake-1.dll.a
|
2013-04-26 01:41:53 +08:00
|
|
|
@GoTo BuildEnd
|
|
|
|
:Usage
|
|
|
|
echo Usage: %0 [options] [gcc]
|
|
|
|
echo Options:
|
|
|
|
echo. --debug For GCC only, make a debug build
|
|
|
|
echo. (MSVC build always makes both debug and release)
|
|
|
|
echo. --without-guile Do not compile Guile support even if found
|
|
|
|
echo. --help Display these instructions and exit
|
2005-08-08 13:08:00 +08:00
|
|
|
:BuildEnd
|
2012-01-29 04:28:31 +08:00
|
|
|
@echo off
|
|
|
|
set GUILELIBS=
|
|
|
|
set GUILECFLAGS=
|
|
|
|
set PKGMSC=
|
2013-04-26 01:41:53 +08:00
|
|
|
set OPT=
|
|
|
|
set COMPILER=
|
|
|
|
set NOGUILE=
|
1996-07-20 05:43:36 +08:00
|
|
|
echo on
|