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