nmake.mak revision 209139
1# Makefile for Microsoft nmake to build wpa_supplicant
2
3# This can be run in Visual Studio 2005 Command Prompt
4
5# Note: Make sure that cl.exe is configured to include Platform SDK
6# include and lib directories (vsvars32.bat)
7
8all: wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe wpasvc.exe win_if_list.exe
9
10# Root directory for WinPcap developer's pack
11# (http://www.winpcap.org/install/bin/WpdPack_3_1.zip)
12WINPCAPDIR=C:\dev\WpdPack
13
14# Root directory for OpenSSL
15# (http://www.openssl.org/source/openssl-0.9.8a.tar.gz)
16# Build and installed following instructions in INSTALL.W32
17# Note: If EAP-FAST is included in the build, OpenSSL needs to be patched to
18# support it (openssl-tls-extensions.patch)
19# Alternatively, see README-Windows.txt for information about binary
20# installation package for OpenSSL.
21OPENSSLDIR=C:\dev\openssl
22
23CC = cl
24OBJDIR = objs
25
26CFLAGS = /DCONFIG_NATIVE_WINDOWS
27CFLAGS = $(CFLAGS) /DCONFIG_NDIS_EVENTS_INTEGRATED
28CFLAGS = $(CFLAGS) /DCONFIG_ANSI_C_EXTRA
29CFLAGS = $(CFLAGS) /DCONFIG_WINPCAP
30CFLAGS = $(CFLAGS) /DIEEE8021X_EAPOL
31CFLAGS = $(CFLAGS) /DEAP_TLS_FUNCS
32CFLAGS = $(CFLAGS) /DPKCS12_FUNCS
33CFLAGS = $(CFLAGS) /DEAP_MD5
34CFLAGS = $(CFLAGS) /DEAP_TLS
35CFLAGS = $(CFLAGS) /DEAP_MSCHAPv2
36CFLAGS = $(CFLAGS) /DEAP_PEAP
37CFLAGS = $(CFLAGS) /DEAP_TTLS
38CFLAGS = $(CFLAGS) /DEAP_GTC
39CFLAGS = $(CFLAGS) /DEAP_OTP
40CFLAGS = $(CFLAGS) /DEAP_SIM
41CFLAGS = $(CFLAGS) /DEAP_LEAP
42CFLAGS = $(CFLAGS) /DEAP_PSK
43CFLAGS = $(CFLAGS) /DEAP_AKA
44#CFLAGS = $(CFLAGS) /DEAP_FAST
45CFLAGS = $(CFLAGS) /DEAP_PAX
46CFLAGS = $(CFLAGS) /DEAP_TNC
47CFLAGS = $(CFLAGS) /DPCSC_FUNCS
48CFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE
49CFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE_NAMED_PIPE
50CFLAGS = $(CFLAGS) /DCONFIG_DRIVER_NDIS
51CFLAGS = $(CFLAGS) /I..\src /I..\src\utils /I..\src\common /I..\src\crypto
52CFLAGS = $(CFLAGS) /I..\src\rsn_supp /I..\src\eapol_supp /I.
53CFLAGS = $(CFLAGS) /DWIN32
54CFLAGS = $(CFLAGS) /Fo$(OBJDIR)\\ /c
55CFLAGS = $(CFLAGS) /W3
56
57#CFLAGS = $(CFLAGS) /WX
58
59# VS 2005 complains about lot of deprecated string functions; let's ignore them
60# at least for now since snprintf and strncpy can be used in a safe way
61CFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_DEPRECATE
62
63OBJS = \
64	$(OBJDIR)\os_win32.obj \
65	$(OBJDIR)\eloop_win.obj \
66	$(OBJDIR)\sha1.obj \
67	$(OBJDIR)\md5.obj \
68	$(OBJDIR)\rc4.obj \
69	$(OBJDIR)\aes_wrap.obj \
70	$(OBJDIR)\common.obj \
71	$(OBJDIR)\wpa_debug.obj \
72	$(OBJDIR)\wpabuf.obj \
73	$(OBJDIR)\wpa_supplicant.obj \
74	$(OBJDIR)\wpa.obj \
75	$(OBJDIR)\wpa_common.obj \
76	$(OBJDIR)\wpa_ie.obj \
77	$(OBJDIR)\preauth.obj \
78	$(OBJDIR)\pmksa_cache.obj \
79	$(OBJDIR)\eapol_supp_sm.obj \
80	$(OBJDIR)\eap.obj \
81	$(OBJDIR)\eap_common.obj \
82	$(OBJDIR)\chap.obj \
83	$(OBJDIR)\eap_methods.obj \
84	$(OBJDIR)\eap_md5.obj \
85	$(OBJDIR)\eap_tls.obj \
86	$(OBJDIR)\eap_tls_common.obj \
87	$(OBJDIR)\eap_mschapv2.obj \
88	$(OBJDIR)\mschapv2.obj \
89	$(OBJDIR)\eap_peap.obj \
90	$(OBJDIR)\eap_peap_common.obj \
91	$(OBJDIR)\eap_ttls.obj \
92	$(OBJDIR)\eap_gtc.obj \
93	$(OBJDIR)\eap_otp.obj \
94	$(OBJDIR)\eap_leap.obj \
95	$(OBJDIR)\eap_sim.obj \
96	$(OBJDIR)\eap_sim_common.obj \
97	$(OBJDIR)\eap_aka.obj \
98	$(OBJDIR)\eap_pax.obj \
99	$(OBJDIR)\eap_pax_common.obj \
100	$(OBJDIR)\eap_psk.obj \
101	$(OBJDIR)\eap_psk_common.obj \
102	$(OBJDIR)\eap_tnc.obj \
103	$(OBJDIR)\tncc.obj \
104	$(OBJDIR)\base64.obj \
105	$(OBJDIR)\ctrl_iface.obj \
106	$(OBJDIR)\ctrl_iface_named_pipe.obj \
107	$(OBJDIR)\driver_ndis.obj \
108	$(OBJDIR)\driver_ndis_.obj \
109	$(OBJDIR)\scan_helpers.obj \
110	$(OBJDIR)\events.obj \
111	$(OBJDIR)\blacklist.obj \
112	$(OBJDIR)\scan.obj \
113	$(OBJDIR)\wpas_glue.obj \
114	$(OBJDIR)\config.obj \
115	$(OBJDIR)\l2_packet_winpcap.obj \
116	$(OBJDIR)\tls_openssl.obj \
117	$(OBJDIR)\ms_funcs.obj \
118	$(OBJDIR)\crypto_openssl.obj \
119	$(OBJDIR)\pcsc_funcs.obj \
120	$(OBJDIR)\ndis_events.obj
121
122# OBJS = $(OBJS) $(OBJDIR)\eap_fast.obj
123
124OBJS_t = $(OBJS) \
125	$(OBJDIR)\eapol_test.obj \
126	$(OBJDIR)\radius.obj \
127	$(OBJDIR)\radius_client.obj \
128	$(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj
129
130OBJS_t2 = $(OBJS) \
131	$(OBJDIR)\preauth_test.obj \
132	$(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj
133
134OBJS2 = $(OBJDIR)\drivers.obj \
135	$(OBJDIR)\config_file.obj \
136	$(OBJS2) $(OBJDIR)\main.obj
137
138OBJS3 = $(OBJDIR)\drivers.obj \
139	$(OBJDIR)\config_winreg.obj \
140	$(OBJS3) $(OBJDIR)\main_winsvc.obj
141
142OBJS_c = \
143	$(OBJDIR)\os_win32.obj \
144	$(OBJDIR)\wpa_cli.obj \
145	$(OBJDIR)\wpa_ctrl.obj \
146	$(OBJDIR)\common.obj
147
148OBJS_p = \
149	$(OBJDIR)\os_win32.obj \
150	$(OBJDIR)\common.obj \
151	$(OBJDIR)\sha1.obj \
152	$(OBJDIR)\md5.obj \
153	$(OBJDIR)\crypto_openssl.obj \
154	$(OBJDIR)\wpa_passphrase.obj
155
156LIBS = wbemuuid.lib libcmt.lib kernel32.lib uuid.lib ole32.lib oleaut32.lib \
157	ws2_32.lib Advapi32.lib Crypt32.lib Winscard.lib \
158	Packet.lib wpcap.lib \
159	libeay32.lib ssleay32.lib
160# If using Win32 OpenSSL binary installation from Shining Light Productions,
161# replace the last line with this for dynamic libraries
162#	libeay32MT.lib ssleay32MT.lib
163# and this for static libraries
164#	libeay32MT.lib ssleay32MT.lib Gdi32.lib User32.lib
165
166CFLAGS = $(CFLAGS) /I"$(WINPCAPDIR)/Include" /I"$(OPENSSLDIR)\include"
167LFLAGS = /libpath:"$(WINPCAPDIR)\Lib" /libpath:"$(OPENSSLDIR)\lib"
168
169wpa_supplicant.exe: $(OBJDIR) $(OBJS) $(OBJS2)
170	link.exe /out:wpa_supplicant.exe $(LFLAGS) $(OBJS) $(OBJS2) $(LIBS)
171
172wpasvc.exe: $(OBJDIR) $(OBJS) $(OBJS3)
173	link.exe /out:wpasvc.exe $(LFLAGS) $(OBJS) $(OBJS3) $(LIBS)
174
175wpa_cli.exe: $(OBJDIR) $(OBJS_c)
176	link.exe /out:wpa_cli.exe $(LFLAGS) $(OBJS_c) $(LIBS)
177
178wpa_passphrase.exe: $(OBJDIR) $(OBJS_p)
179	link.exe /out:wpa_passphrase.exe $(LFLAGS) $(OBJS_p) $(LIBS)
180
181eapol_test.exe: $(OBJDIR) $(OBJS_t)
182	link.exe /out:eapol_test.exe $(LFLAGS) $(OBJS_t) $(LIBS)
183
184preauth_test.exe: $(OBJDIR) $(OBJS_t2)
185	link.exe /out:preauth_test.exe $(LFLAGS) $(OBJS_t2) $(LIBS)
186
187win_if_list.exe: $(OBJDIR) $(OBJDIR)\win_if_list.obj
188	link.exe /out:win_if_list.exe $(LFLAGS) $(OBJDIR)\win_if_list.obj $(LIBS)
189
190
191{..\src\utils}.c{$(OBJDIR)}.obj::
192	$(CC) $(CFLAGS) $<
193
194{..\src\common}.c{$(OBJDIR)}.obj::
195	$(CC) $(CFLAGS) $<
196
197{..\src\rsn_supp}.c{$(OBJDIR)}.obj::
198	$(CC) $(CFLAGS) $<
199
200{..\src\eapol_supp}.c{$(OBJDIR)}.obj::
201	$(CC) $(CFLAGS) $<
202
203{..\src\crypto}.c{$(OBJDIR)}.obj::
204	$(CC) $(CFLAGS) $<
205
206{..\src\eap_peer}.c{$(OBJDIR)}.obj::
207	$(CC) $(CFLAGS) $<
208
209{..\src\eap_common}.c{$(OBJDIR)}.obj::
210	$(CC) $(CFLAGS) $<
211
212{..\src\drivers}.c{$(OBJDIR)}.obj::
213	$(CC) $(CFLAGS) $<
214
215{..\src\l2_packet}.c{$(OBJDIR)}.obj::
216	$(CC) $(CFLAGS) $<
217
218{.\}.c{$(OBJDIR)}.obj::
219	$(CC) $(CFLAGS) $<
220
221{.\}.cpp{$(OBJDIR)}.obj::
222	$(CC) $(CFLAGS) $<
223
224$(OBJDIR):
225	if not exist "$(OBJDIR)" mkdir "$(OBJDIR)"
226
227clean:
228	erase $(OBJDIR)\*.obj wpa_supplicant.exe
229