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