1209139Srpaulo# Makefile for Microsoft nmake to build wpa_supplicant
2209139Srpaulo
3209139Srpaulo# This can be run in Visual Studio 2005 Command Prompt
4209139Srpaulo
5209139Srpaulo# Note: Make sure that cl.exe is configured to include Platform SDK
6209139Srpaulo# include and lib directories (vsvars32.bat)
7209139Srpaulo
8209139Srpauloall: wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe wpasvc.exe win_if_list.exe
9209139Srpaulo
10209139Srpaulo# Root directory for WinPcap developer's pack
11209139Srpaulo# (http://www.winpcap.org/install/bin/WpdPack_3_1.zip)
12209139SrpauloWINPCAPDIR=C:\dev\WpdPack
13209139Srpaulo
14209139Srpaulo# Root directory for OpenSSL
15209139Srpaulo# (http://www.openssl.org/source/openssl-0.9.8a.tar.gz)
16209139Srpaulo# Build and installed following instructions in INSTALL.W32
17209139Srpaulo# Note: If EAP-FAST is included in the build, OpenSSL needs to be patched to
18209139Srpaulo# support it (openssl-tls-extensions.patch)
19209139Srpaulo# Alternatively, see README-Windows.txt for information about binary
20209139Srpaulo# installation package for OpenSSL.
21209139SrpauloOPENSSLDIR=C:\dev\openssl
22209139Srpaulo
23209139SrpauloCC = cl
24209139SrpauloOBJDIR = objs
25209139Srpaulo
26209139SrpauloCFLAGS = /DCONFIG_NATIVE_WINDOWS
27209139SrpauloCFLAGS = $(CFLAGS) /DCONFIG_NDIS_EVENTS_INTEGRATED
28209139SrpauloCFLAGS = $(CFLAGS) /DCONFIG_ANSI_C_EXTRA
29209139SrpauloCFLAGS = $(CFLAGS) /DCONFIG_WINPCAP
30209139SrpauloCFLAGS = $(CFLAGS) /DIEEE8021X_EAPOL
31209139SrpauloCFLAGS = $(CFLAGS) /DPKCS12_FUNCS
32209139SrpauloCFLAGS = $(CFLAGS) /DEAP_MD5
33209139SrpauloCFLAGS = $(CFLAGS) /DEAP_TLS
34209139SrpauloCFLAGS = $(CFLAGS) /DEAP_MSCHAPv2
35209139SrpauloCFLAGS = $(CFLAGS) /DEAP_PEAP
36209139SrpauloCFLAGS = $(CFLAGS) /DEAP_TTLS
37209139SrpauloCFLAGS = $(CFLAGS) /DEAP_GTC
38209139SrpauloCFLAGS = $(CFLAGS) /DEAP_OTP
39209139SrpauloCFLAGS = $(CFLAGS) /DEAP_SIM
40209139SrpauloCFLAGS = $(CFLAGS) /DEAP_LEAP
41209139SrpauloCFLAGS = $(CFLAGS) /DEAP_PSK
42209139SrpauloCFLAGS = $(CFLAGS) /DEAP_AKA
43209139Srpaulo#CFLAGS = $(CFLAGS) /DEAP_FAST
44209139SrpauloCFLAGS = $(CFLAGS) /DEAP_PAX
45209139SrpauloCFLAGS = $(CFLAGS) /DEAP_TNC
46209139SrpauloCFLAGS = $(CFLAGS) /DPCSC_FUNCS
47209139SrpauloCFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE
48209139SrpauloCFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE_NAMED_PIPE
49209139SrpauloCFLAGS = $(CFLAGS) /DCONFIG_DRIVER_NDIS
50214734SrpauloCFLAGS = $(CFLAGS) /I..\src /I..\src\utils
51214734SrpauloCFLAGS = $(CFLAGS) /I.
52209139SrpauloCFLAGS = $(CFLAGS) /DWIN32
53209139SrpauloCFLAGS = $(CFLAGS) /Fo$(OBJDIR)\\ /c
54209139SrpauloCFLAGS = $(CFLAGS) /W3
55209139Srpaulo
56209139Srpaulo#CFLAGS = $(CFLAGS) /WX
57209139Srpaulo
58209139Srpaulo# VS 2005 complains about lot of deprecated string functions; let's ignore them
59209139Srpaulo# at least for now since snprintf and strncpy can be used in a safe way
60209139SrpauloCFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_DEPRECATE
61209139Srpaulo
62209139SrpauloOBJS = \
63209139Srpaulo	$(OBJDIR)\os_win32.obj \
64209139Srpaulo	$(OBJDIR)\eloop_win.obj \
65209139Srpaulo	$(OBJDIR)\sha1.obj \
66214734Srpaulo	$(OBJDIR)\sha1-tlsprf.obj \
67214734Srpaulo	$(OBJDIR)\sha1-pbkdf2.obj \
68209139Srpaulo	$(OBJDIR)\md5.obj \
69214734Srpaulo	$(OBJDIR)\aes-cbc.obj \
70214734Srpaulo	$(OBJDIR)\aes-ctr.obj \
71214734Srpaulo	$(OBJDIR)\aes-eax.obj \
72214734Srpaulo	$(OBJDIR)\aes-encblock.obj \
73214734Srpaulo	$(OBJDIR)\aes-omac1.obj \
74214734Srpaulo	$(OBJDIR)\aes-unwrap.obj \
75214734Srpaulo	$(OBJDIR)\aes-wrap.obj \
76209139Srpaulo	$(OBJDIR)\common.obj \
77209139Srpaulo	$(OBJDIR)\wpa_debug.obj \
78209139Srpaulo	$(OBJDIR)\wpabuf.obj \
79209139Srpaulo	$(OBJDIR)\wpa_supplicant.obj \
80209139Srpaulo	$(OBJDIR)\wpa.obj \
81209139Srpaulo	$(OBJDIR)\wpa_common.obj \
82209139Srpaulo	$(OBJDIR)\wpa_ie.obj \
83209139Srpaulo	$(OBJDIR)\preauth.obj \
84209139Srpaulo	$(OBJDIR)\pmksa_cache.obj \
85209139Srpaulo	$(OBJDIR)\eapol_supp_sm.obj \
86209139Srpaulo	$(OBJDIR)\eap.obj \
87209139Srpaulo	$(OBJDIR)\eap_common.obj \
88209139Srpaulo	$(OBJDIR)\chap.obj \
89209139Srpaulo	$(OBJDIR)\eap_methods.obj \
90209139Srpaulo	$(OBJDIR)\eap_md5.obj \
91209139Srpaulo	$(OBJDIR)\eap_tls.obj \
92209139Srpaulo	$(OBJDIR)\eap_tls_common.obj \
93209139Srpaulo	$(OBJDIR)\eap_mschapv2.obj \
94209139Srpaulo	$(OBJDIR)\mschapv2.obj \
95209139Srpaulo	$(OBJDIR)\eap_peap.obj \
96209139Srpaulo	$(OBJDIR)\eap_peap_common.obj \
97209139Srpaulo	$(OBJDIR)\eap_ttls.obj \
98209139Srpaulo	$(OBJDIR)\eap_gtc.obj \
99209139Srpaulo	$(OBJDIR)\eap_otp.obj \
100209139Srpaulo	$(OBJDIR)\eap_leap.obj \
101209139Srpaulo	$(OBJDIR)\eap_sim.obj \
102209139Srpaulo	$(OBJDIR)\eap_sim_common.obj \
103209139Srpaulo	$(OBJDIR)\eap_aka.obj \
104209139Srpaulo	$(OBJDIR)\eap_pax.obj \
105209139Srpaulo	$(OBJDIR)\eap_pax_common.obj \
106209139Srpaulo	$(OBJDIR)\eap_psk.obj \
107209139Srpaulo	$(OBJDIR)\eap_psk_common.obj \
108209139Srpaulo	$(OBJDIR)\eap_tnc.obj \
109209139Srpaulo	$(OBJDIR)\tncc.obj \
110209139Srpaulo	$(OBJDIR)\base64.obj \
111209139Srpaulo	$(OBJDIR)\ctrl_iface.obj \
112209139Srpaulo	$(OBJDIR)\ctrl_iface_named_pipe.obj \
113209139Srpaulo	$(OBJDIR)\driver_ndis.obj \
114209139Srpaulo	$(OBJDIR)\driver_ndis_.obj \
115209139Srpaulo	$(OBJDIR)\scan_helpers.obj \
116209139Srpaulo	$(OBJDIR)\events.obj \
117209139Srpaulo	$(OBJDIR)\blacklist.obj \
118209139Srpaulo	$(OBJDIR)\scan.obj \
119209139Srpaulo	$(OBJDIR)\wpas_glue.obj \
120214734Srpaulo	$(OBJDIR)\eap_register.obj \
121209139Srpaulo	$(OBJDIR)\config.obj \
122209139Srpaulo	$(OBJDIR)\l2_packet_winpcap.obj \
123209139Srpaulo	$(OBJDIR)\tls_openssl.obj \
124209139Srpaulo	$(OBJDIR)\ms_funcs.obj \
125209139Srpaulo	$(OBJDIR)\crypto_openssl.obj \
126214734Srpaulo	$(OBJDIR)\fips_prf_openssl.obj \
127209139Srpaulo	$(OBJDIR)\pcsc_funcs.obj \
128214734Srpaulo	$(OBJDIR)\notify.obj \
129209139Srpaulo	$(OBJDIR)\ndis_events.obj
130209139Srpaulo
131209139Srpaulo# OBJS = $(OBJS) $(OBJDIR)\eap_fast.obj
132209139Srpaulo
133209139SrpauloOBJS_t = $(OBJS) \
134209139Srpaulo	$(OBJDIR)\eapol_test.obj \
135209139Srpaulo	$(OBJDIR)\radius.obj \
136209139Srpaulo	$(OBJDIR)\radius_client.obj \
137209139Srpaulo	$(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj
138209139Srpaulo
139209139SrpauloOBJS_t2 = $(OBJS) \
140209139Srpaulo	$(OBJDIR)\preauth_test.obj \
141209139Srpaulo	$(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj
142209139Srpaulo
143209139SrpauloOBJS2 = $(OBJDIR)\drivers.obj \
144209139Srpaulo	$(OBJDIR)\config_file.obj \
145209139Srpaulo	$(OBJS2) $(OBJDIR)\main.obj
146209139Srpaulo
147209139SrpauloOBJS3 = $(OBJDIR)\drivers.obj \
148209139Srpaulo	$(OBJDIR)\config_winreg.obj \
149209139Srpaulo	$(OBJS3) $(OBJDIR)\main_winsvc.obj
150209139Srpaulo
151209139SrpauloOBJS_c = \
152209139Srpaulo	$(OBJDIR)\os_win32.obj \
153209139Srpaulo	$(OBJDIR)\wpa_cli.obj \
154209139Srpaulo	$(OBJDIR)\wpa_ctrl.obj \
155209139Srpaulo	$(OBJDIR)\common.obj
156209139Srpaulo
157209139SrpauloOBJS_p = \
158209139Srpaulo	$(OBJDIR)\os_win32.obj \
159209139Srpaulo	$(OBJDIR)\common.obj \
160214734Srpaulo	$(OBJDIR)\wpa_debug.obj \
161214734Srpaulo	$(OBJDIR)\wpabuf.obj \
162209139Srpaulo	$(OBJDIR)\sha1.obj \
163209139Srpaulo	$(OBJDIR)\md5.obj \
164209139Srpaulo	$(OBJDIR)\crypto_openssl.obj \
165214734Srpaulo	$(OBJDIR)\sha1-pbkdf2.obj \
166209139Srpaulo	$(OBJDIR)\wpa_passphrase.obj
167209139Srpaulo
168209139SrpauloLIBS = wbemuuid.lib libcmt.lib kernel32.lib uuid.lib ole32.lib oleaut32.lib \
169209139Srpaulo	ws2_32.lib Advapi32.lib Crypt32.lib Winscard.lib \
170209139Srpaulo	Packet.lib wpcap.lib \
171209139Srpaulo	libeay32.lib ssleay32.lib
172209139Srpaulo# If using Win32 OpenSSL binary installation from Shining Light Productions,
173209139Srpaulo# replace the last line with this for dynamic libraries
174209139Srpaulo#	libeay32MT.lib ssleay32MT.lib
175209139Srpaulo# and this for static libraries
176209139Srpaulo#	libeay32MT.lib ssleay32MT.lib Gdi32.lib User32.lib
177209139Srpaulo
178209139SrpauloCFLAGS = $(CFLAGS) /I"$(WINPCAPDIR)/Include" /I"$(OPENSSLDIR)\include"
179209139SrpauloLFLAGS = /libpath:"$(WINPCAPDIR)\Lib" /libpath:"$(OPENSSLDIR)\lib"
180209139Srpaulo
181209139Srpaulowpa_supplicant.exe: $(OBJDIR) $(OBJS) $(OBJS2)
182209139Srpaulo	link.exe /out:wpa_supplicant.exe $(LFLAGS) $(OBJS) $(OBJS2) $(LIBS)
183209139Srpaulo
184209139Srpaulowpasvc.exe: $(OBJDIR) $(OBJS) $(OBJS3)
185209139Srpaulo	link.exe /out:wpasvc.exe $(LFLAGS) $(OBJS) $(OBJS3) $(LIBS)
186209139Srpaulo
187209139Srpaulowpa_cli.exe: $(OBJDIR) $(OBJS_c)
188209139Srpaulo	link.exe /out:wpa_cli.exe $(LFLAGS) $(OBJS_c) $(LIBS)
189209139Srpaulo
190209139Srpaulowpa_passphrase.exe: $(OBJDIR) $(OBJS_p)
191209139Srpaulo	link.exe /out:wpa_passphrase.exe $(LFLAGS) $(OBJS_p) $(LIBS)
192209139Srpaulo
193209139Srpauloeapol_test.exe: $(OBJDIR) $(OBJS_t)
194209139Srpaulo	link.exe /out:eapol_test.exe $(LFLAGS) $(OBJS_t) $(LIBS)
195209139Srpaulo
196209139Srpaulopreauth_test.exe: $(OBJDIR) $(OBJS_t2)
197209139Srpaulo	link.exe /out:preauth_test.exe $(LFLAGS) $(OBJS_t2) $(LIBS)
198209139Srpaulo
199209139Srpaulowin_if_list.exe: $(OBJDIR) $(OBJDIR)\win_if_list.obj
200209139Srpaulo	link.exe /out:win_if_list.exe $(LFLAGS) $(OBJDIR)\win_if_list.obj $(LIBS)
201209139Srpaulo
202209139Srpaulo
203209139Srpaulo{..\src\utils}.c{$(OBJDIR)}.obj::
204209139Srpaulo	$(CC) $(CFLAGS) $<
205209139Srpaulo
206209139Srpaulo{..\src\common}.c{$(OBJDIR)}.obj::
207209139Srpaulo	$(CC) $(CFLAGS) $<
208209139Srpaulo
209209139Srpaulo{..\src\rsn_supp}.c{$(OBJDIR)}.obj::
210209139Srpaulo	$(CC) $(CFLAGS) $<
211209139Srpaulo
212209139Srpaulo{..\src\eapol_supp}.c{$(OBJDIR)}.obj::
213209139Srpaulo	$(CC) $(CFLAGS) $<
214209139Srpaulo
215209139Srpaulo{..\src\crypto}.c{$(OBJDIR)}.obj::
216209139Srpaulo	$(CC) $(CFLAGS) $<
217209139Srpaulo
218209139Srpaulo{..\src\eap_peer}.c{$(OBJDIR)}.obj::
219209139Srpaulo	$(CC) $(CFLAGS) $<
220209139Srpaulo
221209139Srpaulo{..\src\eap_common}.c{$(OBJDIR)}.obj::
222209139Srpaulo	$(CC) $(CFLAGS) $<
223209139Srpaulo
224209139Srpaulo{..\src\drivers}.c{$(OBJDIR)}.obj::
225209139Srpaulo	$(CC) $(CFLAGS) $<
226209139Srpaulo
227209139Srpaulo{..\src\l2_packet}.c{$(OBJDIR)}.obj::
228209139Srpaulo	$(CC) $(CFLAGS) $<
229209139Srpaulo
230209139Srpaulo{.\}.c{$(OBJDIR)}.obj::
231209139Srpaulo	$(CC) $(CFLAGS) $<
232209139Srpaulo
233209139Srpaulo{.\}.cpp{$(OBJDIR)}.obj::
234209139Srpaulo	$(CC) $(CFLAGS) $<
235209139Srpaulo
236209139Srpaulo$(OBJDIR):
237209139Srpaulo	if not exist "$(OBJDIR)" mkdir "$(OBJDIR)"
238209139Srpaulo
239209139Srpauloclean:
240209139Srpaulo	erase $(OBJDIR)\*.obj wpa_supplicant.exe
241