1 # Makefile for Microsoft nmake to build wpa_supplicant
3 # This can be run in Visual Studio 2005 Command Prompt
5 # Note: Make sure that cl.exe is configured to include Platform SDK
6 # include and lib directories (vsvars32.bat)
8 all: wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe wpasvc.exe win_if_list.exe
10 # Root directory for WinPcap developer's pack
11 # (http://www.winpcap.org/install/bin/WpdPack_3_1.zip)
12 WINPCAPDIR=C:\dev\WpdPack
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.
21 OPENSSLDIR=C:\dev\openssl
26 CFLAGS = /DCONFIG_NATIVE_WINDOWS
27 CFLAGS = $(CFLAGS) /DCONFIG_NDIS_EVENTS_INTEGRATED
28 CFLAGS = $(CFLAGS) /DCONFIG_ANSI_C_EXTRA
29 CFLAGS = $(CFLAGS) /DCONFIG_WINPCAP
30 CFLAGS = $(CFLAGS) /DIEEE8021X_EAPOL
31 CFLAGS = $(CFLAGS) /DEAP_TLS_FUNCS
32 CFLAGS = $(CFLAGS) /DPKCS12_FUNCS
33 CFLAGS = $(CFLAGS) /DEAP_MD5
34 CFLAGS = $(CFLAGS) /DEAP_TLS
35 CFLAGS = $(CFLAGS) /DEAP_MSCHAPv2
36 CFLAGS = $(CFLAGS) /DEAP_PEAP
37 CFLAGS = $(CFLAGS) /DEAP_TTLS
38 CFLAGS = $(CFLAGS) /DEAP_GTC
39 CFLAGS = $(CFLAGS) /DEAP_OTP
40 CFLAGS = $(CFLAGS) /DEAP_SIM
41 CFLAGS = $(CFLAGS) /DEAP_LEAP
42 CFLAGS = $(CFLAGS) /DEAP_PSK
43 CFLAGS = $(CFLAGS) /DEAP_AKA
44 #CFLAGS = $(CFLAGS) /DEAP_FAST
45 CFLAGS = $(CFLAGS) /DEAP_PAX
46 CFLAGS = $(CFLAGS) /DPCSC_FUNCS
47 CFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE
48 CFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE_NAMED_PIPE
49 CFLAGS = $(CFLAGS) /DCONFIG_DRIVER_NDIS
50 CFLAGS = $(CFLAGS) /I..\hostapd /I.
51 CFLAGS = $(CFLAGS) /DWIN32
52 CFLAGS = $(CFLAGS) /Fo$(OBJDIR)\\ /c
53 CFLAGS = $(CFLAGS) /W3
55 #CFLAGS = $(CFLAGS) /WX
57 # VS 2005 complains about lot of deprecated string functions; let's ignore them
58 # at least for now since snprintf and strncpy can be used in a safe way
59 CFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_DEPRECATE
62 $(OBJDIR)\os_win32.obj \
63 $(OBJDIR)\eloop_win.obj \
67 $(OBJDIR)\aes_wrap.obj \
68 $(OBJDIR)\common.obj \
69 $(OBJDIR)\wpa_supplicant.obj \
71 $(OBJDIR)\preauth.obj \
72 $(OBJDIR)\pmksa_cache.obj \
73 $(OBJDIR)\eapol_sm.obj \
75 $(OBJDIR)\eap_methods.obj \
76 $(OBJDIR)\eap_tlv.obj \
77 $(OBJDIR)\eap_md5.obj \
78 $(OBJDIR)\eap_tls.obj \
79 $(OBJDIR)\eap_tls_common.obj \
80 $(OBJDIR)\eap_mschapv2.obj \
81 $(OBJDIR)\eap_peap.obj \
82 $(OBJDIR)\eap_ttls.obj \
83 $(OBJDIR)\eap_gtc.obj \
84 $(OBJDIR)\eap_otp.obj \
85 $(OBJDIR)\eap_leap.obj \
86 $(OBJDIR)\eap_sim.obj \
87 $(OBJDIR)\eap_sim_common.obj \
88 $(OBJDIR)\eap_aka.obj \
89 $(OBJDIR)\eap_pax.obj \
90 $(OBJDIR)\eap_pax_common.obj \
91 $(OBJDIR)\eap_psk.obj \
92 $(OBJDIR)\eap_psk_common.obj \
93 $(OBJDIR)\ctrl_iface.obj \
94 $(OBJDIR)\ctrl_iface_named_pipe.obj \
95 $(OBJDIR)\driver_ndis.obj \
96 $(OBJDIR)\driver_ndis_.obj \
97 $(OBJDIR)\events.obj \
98 $(OBJDIR)\config.obj \
99 $(OBJDIR)\l2_packet_winpcap.obj \
100 $(OBJDIR)\tls_openssl.obj \
101 $(OBJDIR)\ms_funcs.obj \
102 $(OBJDIR)\crypto.obj \
103 $(OBJDIR)\pcsc_funcs.obj \
104 $(OBJDIR)\ndis_events.obj
106 # OBJS = $(OBJS) $(OBJDIR)\eap_fast.obj
109 $(OBJDIR)\eapol_test.obj \
110 $(OBJDIR)\radius.obj \
111 $(OBJDIR)\radius_client.obj \
112 $(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj
115 $(OBJDIR)\preauth_test.obj \
116 $(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj
118 OBJS2 = $(OBJDIR)\drivers.obj \
119 $(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj \
120 $(OBJS2) $(OBJDIR)\main.obj
122 OBJS3 = $(OBJDIR)\drivers.obj \
123 $(OBJDIR)\config_winreg.obj \
124 $(OBJS3) $(OBJDIR)\main_winsvc.obj
127 $(OBJDIR)\os_win32.obj \
128 $(OBJDIR)\wpa_cli.obj \
129 $(OBJDIR)\wpa_ctrl.obj \
133 $(OBJDIR)\os_win32.obj \
134 $(OBJDIR)\common.obj \
137 $(OBJDIR)\crypto.obj \
138 $(OBJDIR)\wpa_passphrase.obj
140 LIBS = wbemuuid.lib libcmt.lib kernel32.lib uuid.lib ole32.lib oleaut32.lib \
141 ws2_32.lib Advapi32.lib Crypt32.lib Winscard.lib \
142 Packet.lib wpcap.lib \
143 libeay32.lib ssleay32.lib
144 # If using Win32 OpenSSL binary installation from Shining Light Productions,
145 # replace the last line with this for dynamic libraries
146 # libeay32MT.lib ssleay32MT.lib
147 # and this for static libraries
148 # libeay32MT.lib ssleay32MT.lib Gdi32.lib User32.lib
150 CFLAGS = $(CFLAGS) /I"$(WINPCAPDIR)/Include" /I"$(OPENSSLDIR)\include"
151 LFLAGS = /libpath:"$(WINPCAPDIR)\Lib" /libpath:"$(OPENSSLDIR)\lib"
153 wpa_supplicant.exe: $(OBJDIR) $(OBJS) $(OBJS2)
154 link.exe /out:wpa_supplicant.exe $(LFLAGS) $(OBJS) $(OBJS2) $(LIBS)
156 wpasvc.exe: $(OBJDIR) $(OBJS) $(OBJS3)
157 link.exe /out:wpasvc.exe $(LFLAGS) $(OBJS) $(OBJS3) $(LIBS)
159 wpa_cli.exe: $(OBJDIR) $(OBJS_c)
160 link.exe /out:wpa_cli.exe $(LFLAGS) $(OBJS_c) $(LIBS)
162 wpa_passphrase.exe: $(OBJDIR) $(OBJS_p)
163 link.exe /out:wpa_passphrase.exe $(LFLAGS) $(OBJS_p) $(LIBS)
165 eapol_test.exe: $(OBJDIR) $(OBJS_t)
166 link.exe /out:eapol_test.exe $(LFLAGS) $(OBJS_t) $(LIBS)
168 preauth_test.exe: $(OBJDIR) $(OBJS_t2)
169 link.exe /out:preauth_test.exe $(LFLAGS) $(OBJS_t2) $(LIBS)
171 win_if_list.exe: $(OBJDIR) $(OBJDIR)\win_if_list.obj
172 link.exe /out:win_if_list.exe $(LFLAGS) $(OBJDIR)\win_if_list.obj $(LIBS)
175 {..\hostapd}.c{$(OBJDIR)}.obj::
178 {.\}.c{$(OBJDIR)}.obj::
181 {.\}.cpp{$(OBJDIR)}.obj::
185 if not exist "$(OBJDIR)" mkdir "$(OBJDIR)"
188 erase $(OBJDIR)\*.obj wpa_supplicant.exe