1# NOTE: If you have no `make' program at all to process this makefile, run
2# `build_w32.bat' instead.
3#
4# Copyright (C) 1988,89,91,92,93,94,95,96,97 Free Software Foundation, Inc.
5# This file is part of GNU Make.
6#
7# GNU Make is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2, or (at your option)
10# any later version.
11#
12# GNU Make is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with GNU Make; see the file COPYING.  If not, write to
19# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20# Boston, MA 02111-1307, USA.
21
22#
23#       NMakefile for GNU Make
24#
25
26LINK = link
27CC = cl
28
29OUTDIR=.
30MAKEFILE=NMakefile
31SUBPROC_MAKEFILE=NMakefile
32
33CFLAGS_any = /nologo /MT /W3 /GX /Zi /YX /I . /I glob /I w32/include /D WIN32 /D WINDOWS32 /D _CONSOLE /D HAVE_CONFIG_H
34CFLAGS_debug = $(CFLAGS_any) /Od /D DEBUG /D _DEBUG /FR.\WinDebug/ /Fp.\WinDebug/make.pch /Fo.\WinDebug/ /Fd.\WinDebug/make.pdb
35CFLAGS_release = $(CFLAGS_any) /O2 /D NDEBUG /FR.\WinRel/ /Fp.\WinRel/make.pch /Fo.\WinRel/
36
37LDFLAGS_debug = w32\subproc\WinDebug\subproc.lib /NOLOGO /SUBSYSTEM:console\
38	/INCREMENTAL:no /PDB:WinDebug/make.pdb /MACHINE:I386 \
39	/OUT:WinDebug/make.exe /DEBUG
40LDFLAGS_release = w32\subproc\WinRel\subproc.lib /NOLOGO /SUBSYSTEM:console\
41	/INCREMENTAL:no /MACHINE:I386 /OUT:WinRel/make.exe
42
43all: config.h subproc Release Debug
44
45#
46# Make sure we build the subproc library first. It has it's own
47# makefile. To be portable to Windows 95, we put the instructions
48# on how to build the library into a batch file. On NT, we could
49# simply have done foo && bar && dog, but this doesn't port.
50#
51subproc: w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib
52
53w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib: w32/subproc/misc.c w32/subproc/sub_proc.c w32/subproc/w32err.c
54	subproc.bat $(SUBPROC_MAKEFILE) $(MAKE)
55	if exist WinDebug\make.exe erase WinDebug\make.exe
56	if exist WinRel\make.exe erase WinRel\make.exe
57
58config.h: config.h.W32
59	copy $? $@
60
61Release:
62	$(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_release)" CFLAGS="$(CFLAGS_release)" OUTDIR=WinRel WinRel/make.exe
63Debug:
64	$(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_debug)" CFLAGS="$(CFLAGS_debug)" OUTDIR=WinDebug WinDebug/make.exe
65
66clean:
67	if exist WinDebug\nul rmdir /s /q WinDebug
68	if exist WinRel\nul rmdir /s /q WinRel
69	if exist w32\subproc\WinDebug\nul rmdir /s /q w32\subproc\WinDebug
70	if exist w32\subproc\WinRel\nul rmdir /s /q w32\subproc\WinRel
71	if exist config.h erase config.h
72	erase *.pdb
73
74$(OUTDIR):
75	if not exist .\$@\nul mkdir .\$@
76
77LIBS = kernel32.lib user32.lib advapi32.lib
78
79OBJS = \
80	$(OUTDIR)/ar.obj \
81	$(OUTDIR)/arscan.obj \
82	$(OUTDIR)/commands.obj \
83	$(OUTDIR)/default.obj \
84	$(OUTDIR)/dir.obj \
85	$(OUTDIR)/expand.obj \
86	$(OUTDIR)/file.obj \
87	$(OUTDIR)/function.obj \
88	$(OUTDIR)/getloadavg.obj \
89	$(OUTDIR)/getopt.obj \
90	$(OUTDIR)/getopt1.obj \
91	$(OUTDIR)/implicit.obj \
92	$(OUTDIR)/job.obj \
93	$(OUTDIR)/main.obj \
94	$(OUTDIR)/misc.obj \
95	$(OUTDIR)/read.obj \
96	$(OUTDIR)/remake.obj \
97	$(OUTDIR)/remote-stub.obj \
98	$(OUTDIR)/rule.obj \
99	$(OUTDIR)/signame.obj \
100	$(OUTDIR)/variable.obj \
101	$(OUTDIR)/version.obj \
102	$(OUTDIR)/vpath.obj \
103	$(OUTDIR)/glob.obj \
104	$(OUTDIR)/fnmatch.obj \
105	$(OUTDIR)/dirent.obj \
106	$(OUTDIR)/pathstuff.obj
107
108$(OUTDIR)/make.exe: $(OUTDIR) $(OBJS)
109	$(LINK) @<<
110		$(LDFLAGS) $(LIBS) $(OBJS)
111<<
112
113.c{$(OUTDIR)}.obj:
114	$(CC) $(CFLAGS) /c $<
115
116$(OUTDIR)/glob.obj : glob/glob.c
117	$(CC) $(CFLAGS) /c $?
118$(OUTDIR)/fnmatch.obj : glob/fnmatch.c
119	$(CC) $(CFLAGS) /c $?
120$(OUTDIR)/dirent.obj : w32/compat/dirent.c
121	$(CC) $(CFLAGS) /c $?
122$(OUTDIR)/pathstuff.obj : w32/pathstuff.c
123	$(CC) $(CFLAGS) /c $?
124
125# --------------- DEPENDENCIES
126#
127# dummy
128# dummy
129ar.o : \
130 ar.c make.h config.h \
131 getopt.h \
132 gettext.h filedef.h \
133 hash.h dep.h
134arscan.o : \
135 arscan.c make.h config.h \
136 getopt.h \
137 gettext.h \
138
139commands.o : \
140 commands.c make.h config.h \
141 getopt.h \
142 gettext.h dep.h \
143 filedef.h hash.h variable.h job.h commands.h
144default.o : \
145 default.c make.h config.h \
146 getopt.h \
147 gettext.h rule.h \
148 dep.h filedef.h hash.h job.h commands.h variable.h
149dir.o : \
150 dir.c make.h config.h \
151 getopt.h \
152 gettext.h hash.h \
153
154expand.o : \
155 expand.c make.h config.h \
156 getopt.h \
157 gettext.h \
158 filedef.h hash.h job.h commands.h variable.h \
159 rule.h
160file.o : \
161 file.c make.h config.h \
162 getopt.h \
163 gettext.h \
164 dep.h filedef.h hash.h job.h commands.h \
165 variable.h debug.h
166function.o : \
167 function.c make.h config.h \
168 getopt.h \
169 gettext.h filedef.h \
170 hash.h variable.h dep.h job.h commands.h debug.h
171getopt.o : \
172 getopt.c config.h \
173
174getopt1.o : \
175 getopt1.c config.h getopt.h \
176
177hash.o : \
178 hash.c make.h config.h \
179 getopt.h \
180 gettext.h hash.h
181implicit.o : \
182 implicit.c make.h config.h \
183 getopt.h \
184 gettext.h rule.h \
185 dep.h filedef.h hash.h debug.h
186job.o : \
187 job.c make.h config.h \
188 getopt.h \
189 gettext.h \
190 job.h debug.h filedef.h hash.h commands.h \
191 variable.h \
192
193loadavg-loadavg.o : \
194 loadavg.c config.h \
195 make.h \
196 getopt.h \
197 gettext.h \
198
199main.o : \
200 main.c make.h config.h \
201 getopt.h \
202 gettext.h dep.h \
203 filedef.h hash.h variable.h job.h commands.h rule.h debug.h \
204
205misc.o : \
206 misc.c make.h config.h \
207 getopt.h \
208 gettext.h dep.h \
209 debug.h
210read.o : \
211 read.c make.h config.h \
212 getopt.h \
213 gettext.h \
214 dep.h filedef.h hash.h \
215 job.h commands.h variable.h rule.h debug.h
216remake.o : \
217 remake.c make.h config.h \
218 getopt.h \
219 gettext.h filedef.h \
220 hash.h job.h commands.h dep.h variable.h debug.h \
221
222# dummy
223remote-stub.o : \
224 remote-stub.c make.h config.h \
225 getopt.h \
226 gettext.h filedef.h \
227 hash.h job.h commands.h
228rule.o : \
229 rule.c make.h config.h \
230 getopt.h \
231 gettext.h dep.h \
232 filedef.h hash.h job.h commands.h variable.h rule.h
233signame.o : \
234 signame.c make.h config.h \
235 getopt.h \
236 gettext.h
237variable.o : \
238 variable.c make.h config.h \
239 getopt.h \
240 gettext.h dep.h \
241 filedef.h hash.h job.h commands.h variable.h rule.h
242version.o : \
243 version.c config.h
244vpath.o : \
245 vpath.c make.h config.h \
246 getopt.h \
247 gettext.h filedef.h \
248 hash.h variable.h
249