mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-27 14:57:17 +00:00
deff9dacc9
Create a new file, output.c, and collect functions that generate output there. We introduce a new global context specifying where output should go (to stdout or to a sync file), and the lowest level output generator chooses where to write output based on that context. This allows us to set the context globally, and all operations that write output (including functions like $(info ...) etc.) will use it. Removed the "--trace=dir" capability. It was too confusing. If you have directory tracking enabled then output sync will print the enter/leave message for each synchronized block. If you don't want that, disable directory tracking.
125 lines
3.9 KiB
Makefile
125 lines
3.9 KiB
Makefile
# -*-Makefile-*- to build GNU make with nmake
|
|
#
|
|
# NOTE: If you have no 'make' program at all to process this makefile,
|
|
# run 'build_w32.bat' instead.
|
|
#
|
|
# Copyright (C) 1996-2013 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/>.
|
|
|
|
LINK = link
|
|
CC = cl
|
|
MAKE = nmake
|
|
|
|
OUTDIR=.
|
|
MAKEFILE=NMakefile
|
|
SUBPROC_MAKEFILE=NMakefile
|
|
|
|
CFLAGS_any = /nologo /MT /W4 /GX /Zi /YX /I . /I glob /I w32/include /D WIN32 /D WINDOWS32 /D _CONSOLE /D HAVE_CONFIG_H
|
|
CFLAGS_debug = $(CFLAGS_any) /Od /D DEBUG /D _DEBUG /FR.\WinDebug/ /Fp.\WinDebug/make.pch /Fo.\WinDebug/ /Fd.\WinDebug/make.pdb
|
|
CFLAGS_release = $(CFLAGS_any) /O2 /D NDEBUG /FR.\WinRel/ /Fp.\WinRel/make.pch /Fo.\WinRel/
|
|
|
|
LDFLAGS_debug = w32\subproc\WinDebug\subproc.lib /NOLOGO /SUBSYSTEM:console\
|
|
/INCREMENTAL:no /PDB:WinDebug/make.pdb /OUT:WinDebug/make.exe /DEBUG
|
|
LDFLAGS_release = w32\subproc\WinRel\subproc.lib /NOLOGO /SUBSYSTEM:console\
|
|
/INCREMENTAL:no /OUT:WinRel/make.exe
|
|
|
|
all: config.h subproc Release Debug
|
|
|
|
#
|
|
# Make sure we build the subproc library first. It has it's own
|
|
# makefile. To be portable to Windows 95, we put the instructions
|
|
# on how to build the library into a batch file. On NT, we could
|
|
# simply have done foo && bar && dog, but this doesn't port.
|
|
#
|
|
subproc: w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib
|
|
|
|
w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib: w32/subproc/misc.c w32/subproc/sub_proc.c w32/subproc/w32err.c
|
|
subproc.bat $(SUBPROC_MAKEFILE) $(MAKE)
|
|
if exist WinDebug\make.exe erase WinDebug\make.exe
|
|
if exist WinRel\make.exe erase WinRel\make.exe
|
|
|
|
config.h: config.h.W32
|
|
copy $? $@
|
|
|
|
Release:
|
|
$(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_release)" CFLAGS="$(CFLAGS_release)" OUTDIR=WinRel WinRel/make.exe
|
|
Debug:
|
|
$(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_debug)" CFLAGS="$(CFLAGS_debug)" OUTDIR=WinDebug WinDebug/make.exe
|
|
|
|
clean:
|
|
if exist WinDebug\nul rmdir /s /q WinDebug
|
|
if exist WinRel\nul rmdir /s /q WinRel
|
|
if exist w32\subproc\WinDebug\nul rmdir /s /q w32\subproc\WinDebug
|
|
if exist w32\subproc\WinRel\nul rmdir /s /q w32\subproc\WinRel
|
|
if exist config.h erase config.h
|
|
erase *.pdb
|
|
|
|
$(OUTDIR):
|
|
if not exist .\$@\nul mkdir .\$@
|
|
|
|
LIBS = kernel32.lib user32.lib advapi32.lib
|
|
|
|
#guile = $(OUTDIR)/guile.obj
|
|
|
|
OBJS = \
|
|
$(OUTDIR)/ar.obj \
|
|
$(OUTDIR)/arscan.obj \
|
|
$(OUTDIR)/commands.obj \
|
|
$(OUTDIR)/default.obj \
|
|
$(OUTDIR)/dir.obj \
|
|
$(OUTDIR)/expand.obj \
|
|
$(OUTDIR)/file.obj \
|
|
$(OUTDIR)/function.obj \
|
|
$(OUTDIR)/getloadavg.obj \
|
|
$(OUTDIR)/getopt.obj \
|
|
$(OUTDIR)/getopt1.obj \
|
|
$(OUTDIR)/hash.obj \
|
|
$(OUTDIR)/implicit.obj \
|
|
$(OUTDIR)/job.obj \
|
|
$(OUTDIR)/main.obj \
|
|
$(OUTDIR)/misc.obj \
|
|
$(OUTDIR)/output.obj \
|
|
$(OUTDIR)/read.obj \
|
|
$(OUTDIR)/remake.obj \
|
|
$(OUTDIR)/remote-stub.obj \
|
|
$(OUTDIR)/rule.obj \
|
|
$(OUTDIR)/signame.obj \
|
|
$(OUTDIR)/strcache.obj \
|
|
$(OUTDIR)/variable.obj \
|
|
$(OUTDIR)/version.obj \
|
|
$(OUTDIR)/vpath.obj \
|
|
$(OUTDIR)/glob.obj \
|
|
$(OUTDIR)/fnmatch.obj \
|
|
$(OUTDIR)/dirent.obj \
|
|
$(OUTDIR)/pathstuff.obj \
|
|
$(guile)
|
|
|
|
$(OUTDIR)/make.exe: $(OUTDIR) $(OBJS)
|
|
$(LINK) @<<
|
|
$(LDFLAGS) $(LIBS) $(OBJS)
|
|
<<
|
|
|
|
.c{$(OUTDIR)}.obj:
|
|
$(CC) $(CFLAGS) /c $<
|
|
|
|
$(OUTDIR)/glob.obj : glob/glob.c
|
|
$(CC) $(CFLAGS) /c $?
|
|
$(OUTDIR)/fnmatch.obj : glob/fnmatch.c
|
|
$(CC) $(CFLAGS) /c $?
|
|
$(OUTDIR)/dirent.obj : w32/compat/dirent.c
|
|
$(CC) $(CFLAGS) /c $?
|
|
$(OUTDIR)/pathstuff.obj : w32/pathstuff.c
|
|
$(CC) $(CFLAGS) /c $?
|