13157ba21SRui Paulo# Makefile for Microsoft nmake to build wpa_supplicant 23157ba21SRui Paulo 33157ba21SRui Paulo# This can be run in Visual Studio 2005 Command Prompt 43157ba21SRui Paulo 53157ba21SRui Paulo# Note: Make sure that cl.exe is configured to include Platform SDK 63157ba21SRui Paulo# include and lib directories (vsvars32.bat) 73157ba21SRui Paulo 83157ba21SRui Pauloall: wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe wpasvc.exe win_if_list.exe 93157ba21SRui Paulo 103157ba21SRui Paulo# Root directory for WinPcap developer's pack 113157ba21SRui Paulo# (http://www.winpcap.org/install/bin/WpdPack_3_1.zip) 123157ba21SRui PauloWINPCAPDIR=C:\dev\WpdPack 133157ba21SRui Paulo 143157ba21SRui Paulo# Root directory for OpenSSL 153157ba21SRui Paulo# (http://www.openssl.org/source/openssl-0.9.8a.tar.gz) 163157ba21SRui Paulo# Build and installed following instructions in INSTALL.W32 173157ba21SRui Paulo# Note: If EAP-FAST is included in the build, OpenSSL needs to be patched to 183157ba21SRui Paulo# support it (openssl-tls-extensions.patch) 193157ba21SRui Paulo# Alternatively, see README-Windows.txt for information about binary 203157ba21SRui Paulo# installation package for OpenSSL. 213157ba21SRui PauloOPENSSLDIR=C:\dev\openssl 223157ba21SRui Paulo 233157ba21SRui PauloCC = cl 243157ba21SRui PauloOBJDIR = objs 253157ba21SRui Paulo 263157ba21SRui PauloCFLAGS = /DCONFIG_NATIVE_WINDOWS 273157ba21SRui PauloCFLAGS = $(CFLAGS) /DCONFIG_NDIS_EVENTS_INTEGRATED 283157ba21SRui PauloCFLAGS = $(CFLAGS) /DCONFIG_ANSI_C_EXTRA 293157ba21SRui PauloCFLAGS = $(CFLAGS) /DCONFIG_WINPCAP 303157ba21SRui PauloCFLAGS = $(CFLAGS) /DIEEE8021X_EAPOL 313157ba21SRui PauloCFLAGS = $(CFLAGS) /DPKCS12_FUNCS 323157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_MD5 333157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_TLS 343157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_MSCHAPv2 353157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_PEAP 363157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_TTLS 373157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_GTC 383157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_OTP 393157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_SIM 403157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_LEAP 413157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_PSK 423157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_AKA 433157ba21SRui Paulo#CFLAGS = $(CFLAGS) /DEAP_FAST 443157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_PAX 453157ba21SRui PauloCFLAGS = $(CFLAGS) /DEAP_TNC 463157ba21SRui PauloCFLAGS = $(CFLAGS) /DPCSC_FUNCS 473157ba21SRui PauloCFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE 483157ba21SRui PauloCFLAGS = $(CFLAGS) /DCONFIG_CTRL_IFACE_NAMED_PIPE 493157ba21SRui PauloCFLAGS = $(CFLAGS) /DCONFIG_DRIVER_NDIS 50e28a4053SRui PauloCFLAGS = $(CFLAGS) /I..\src /I..\src\utils 51e28a4053SRui PauloCFLAGS = $(CFLAGS) /I. 523157ba21SRui PauloCFLAGS = $(CFLAGS) /DWIN32 533157ba21SRui PauloCFLAGS = $(CFLAGS) /Fo$(OBJDIR)\\ /c 543157ba21SRui PauloCFLAGS = $(CFLAGS) /W3 553157ba21SRui Paulo 563157ba21SRui Paulo#CFLAGS = $(CFLAGS) /WX 573157ba21SRui Paulo 583157ba21SRui Paulo# VS 2005 complains about lot of deprecated string functions; let's ignore them 593157ba21SRui Paulo# at least for now since snprintf and strncpy can be used in a safe way 603157ba21SRui PauloCFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_DEPRECATE 613157ba21SRui Paulo 623157ba21SRui PauloOBJS = \ 633157ba21SRui Paulo $(OBJDIR)\os_win32.obj \ 643157ba21SRui Paulo $(OBJDIR)\eloop_win.obj \ 653157ba21SRui Paulo $(OBJDIR)\sha1.obj \ 66e28a4053SRui Paulo $(OBJDIR)\sha1-tlsprf.obj \ 67e28a4053SRui Paulo $(OBJDIR)\sha1-pbkdf2.obj \ 683157ba21SRui Paulo $(OBJDIR)\md5.obj \ 69e28a4053SRui Paulo $(OBJDIR)\aes-cbc.obj \ 70e28a4053SRui Paulo $(OBJDIR)\aes-ctr.obj \ 71e28a4053SRui Paulo $(OBJDIR)\aes-eax.obj \ 72e28a4053SRui Paulo $(OBJDIR)\aes-encblock.obj \ 73e28a4053SRui Paulo $(OBJDIR)\aes-omac1.obj \ 74e28a4053SRui Paulo $(OBJDIR)\aes-unwrap.obj \ 75e28a4053SRui Paulo $(OBJDIR)\aes-wrap.obj \ 763157ba21SRui Paulo $(OBJDIR)\common.obj \ 773157ba21SRui Paulo $(OBJDIR)\wpa_debug.obj \ 783157ba21SRui Paulo $(OBJDIR)\wpabuf.obj \ 793157ba21SRui Paulo $(OBJDIR)\wpa_supplicant.obj \ 803157ba21SRui Paulo $(OBJDIR)\wpa.obj \ 813157ba21SRui Paulo $(OBJDIR)\wpa_common.obj \ 823157ba21SRui Paulo $(OBJDIR)\wpa_ie.obj \ 833157ba21SRui Paulo $(OBJDIR)\preauth.obj \ 843157ba21SRui Paulo $(OBJDIR)\pmksa_cache.obj \ 853157ba21SRui Paulo $(OBJDIR)\eapol_supp_sm.obj \ 863157ba21SRui Paulo $(OBJDIR)\eap.obj \ 873157ba21SRui Paulo $(OBJDIR)\eap_common.obj \ 883157ba21SRui Paulo $(OBJDIR)\chap.obj \ 893157ba21SRui Paulo $(OBJDIR)\eap_methods.obj \ 903157ba21SRui Paulo $(OBJDIR)\eap_md5.obj \ 913157ba21SRui Paulo $(OBJDIR)\eap_tls.obj \ 923157ba21SRui Paulo $(OBJDIR)\eap_tls_common.obj \ 933157ba21SRui Paulo $(OBJDIR)\eap_mschapv2.obj \ 943157ba21SRui Paulo $(OBJDIR)\mschapv2.obj \ 953157ba21SRui Paulo $(OBJDIR)\eap_peap.obj \ 963157ba21SRui Paulo $(OBJDIR)\eap_peap_common.obj \ 973157ba21SRui Paulo $(OBJDIR)\eap_ttls.obj \ 983157ba21SRui Paulo $(OBJDIR)\eap_gtc.obj \ 993157ba21SRui Paulo $(OBJDIR)\eap_otp.obj \ 1003157ba21SRui Paulo $(OBJDIR)\eap_leap.obj \ 1013157ba21SRui Paulo $(OBJDIR)\eap_sim.obj \ 1023157ba21SRui Paulo $(OBJDIR)\eap_sim_common.obj \ 1033157ba21SRui Paulo $(OBJDIR)\eap_aka.obj \ 1043157ba21SRui Paulo $(OBJDIR)\eap_pax.obj \ 1053157ba21SRui Paulo $(OBJDIR)\eap_pax_common.obj \ 1063157ba21SRui Paulo $(OBJDIR)\eap_psk.obj \ 1073157ba21SRui Paulo $(OBJDIR)\eap_psk_common.obj \ 1083157ba21SRui Paulo $(OBJDIR)\eap_tnc.obj \ 1093157ba21SRui Paulo $(OBJDIR)\tncc.obj \ 1103157ba21SRui Paulo $(OBJDIR)\base64.obj \ 1113157ba21SRui Paulo $(OBJDIR)\ctrl_iface.obj \ 1123157ba21SRui Paulo $(OBJDIR)\ctrl_iface_named_pipe.obj \ 1133157ba21SRui Paulo $(OBJDIR)\driver_ndis.obj \ 1143157ba21SRui Paulo $(OBJDIR)\driver_ndis_.obj \ 1153157ba21SRui Paulo $(OBJDIR)\scan_helpers.obj \ 1163157ba21SRui Paulo $(OBJDIR)\events.obj \ 117*c1d255d3SCy Schubert $(OBJDIR)\bssid_ignore.obj \ 1183157ba21SRui Paulo $(OBJDIR)\scan.obj \ 1193157ba21SRui Paulo $(OBJDIR)\wpas_glue.obj \ 120e28a4053SRui Paulo $(OBJDIR)\eap_register.obj \ 1213157ba21SRui Paulo $(OBJDIR)\config.obj \ 1223157ba21SRui Paulo $(OBJDIR)\l2_packet_winpcap.obj \ 1233157ba21SRui Paulo $(OBJDIR)\tls_openssl.obj \ 1243157ba21SRui Paulo $(OBJDIR)\ms_funcs.obj \ 1253157ba21SRui Paulo $(OBJDIR)\crypto_openssl.obj \ 126e28a4053SRui Paulo $(OBJDIR)\fips_prf_openssl.obj \ 1273157ba21SRui Paulo $(OBJDIR)\pcsc_funcs.obj \ 128e28a4053SRui Paulo $(OBJDIR)\notify.obj \ 1293157ba21SRui Paulo $(OBJDIR)\ndis_events.obj 1303157ba21SRui Paulo 1313157ba21SRui Paulo# OBJS = $(OBJS) $(OBJDIR)\eap_fast.obj 1323157ba21SRui Paulo 1333157ba21SRui PauloOBJS_t = $(OBJS) \ 1343157ba21SRui Paulo $(OBJDIR)\eapol_test.obj \ 1353157ba21SRui Paulo $(OBJDIR)\radius.obj \ 1363157ba21SRui Paulo $(OBJDIR)\radius_client.obj \ 1373157ba21SRui Paulo $(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj 1383157ba21SRui Paulo 1393157ba21SRui PauloOBJS_t2 = $(OBJS) \ 1403157ba21SRui Paulo $(OBJDIR)\preauth_test.obj \ 1413157ba21SRui Paulo $(OBJDIR)\config_file.obj $(OBJDIR)\base64.obj 1423157ba21SRui Paulo 1433157ba21SRui PauloOBJS2 = $(OBJDIR)\drivers.obj \ 1443157ba21SRui Paulo $(OBJDIR)\config_file.obj \ 1453157ba21SRui Paulo $(OBJS2) $(OBJDIR)\main.obj 1463157ba21SRui Paulo 1473157ba21SRui PauloOBJS3 = $(OBJDIR)\drivers.obj \ 1483157ba21SRui Paulo $(OBJDIR)\config_winreg.obj \ 1493157ba21SRui Paulo $(OBJS3) $(OBJDIR)\main_winsvc.obj 1503157ba21SRui Paulo 1513157ba21SRui PauloOBJS_c = \ 1523157ba21SRui Paulo $(OBJDIR)\os_win32.obj \ 1533157ba21SRui Paulo $(OBJDIR)\wpa_cli.obj \ 1543157ba21SRui Paulo $(OBJDIR)\wpa_ctrl.obj \ 1553157ba21SRui Paulo $(OBJDIR)\common.obj 1563157ba21SRui Paulo 1573157ba21SRui PauloOBJS_p = \ 1583157ba21SRui Paulo $(OBJDIR)\os_win32.obj \ 1593157ba21SRui Paulo $(OBJDIR)\common.obj \ 160e28a4053SRui Paulo $(OBJDIR)\wpa_debug.obj \ 161e28a4053SRui Paulo $(OBJDIR)\wpabuf.obj \ 1623157ba21SRui Paulo $(OBJDIR)\sha1.obj \ 1633157ba21SRui Paulo $(OBJDIR)\md5.obj \ 1643157ba21SRui Paulo $(OBJDIR)\crypto_openssl.obj \ 165e28a4053SRui Paulo $(OBJDIR)\sha1-pbkdf2.obj \ 1663157ba21SRui Paulo $(OBJDIR)\wpa_passphrase.obj 1673157ba21SRui Paulo 1683157ba21SRui PauloLIBS = wbemuuid.lib libcmt.lib kernel32.lib uuid.lib ole32.lib oleaut32.lib \ 1693157ba21SRui Paulo ws2_32.lib Advapi32.lib Crypt32.lib Winscard.lib \ 1703157ba21SRui Paulo Packet.lib wpcap.lib \ 1713157ba21SRui Paulo libeay32.lib ssleay32.lib 1723157ba21SRui Paulo# If using Win32 OpenSSL binary installation from Shining Light Productions, 1733157ba21SRui Paulo# replace the last line with this for dynamic libraries 1743157ba21SRui Paulo# libeay32MT.lib ssleay32MT.lib 1753157ba21SRui Paulo# and this for static libraries 1763157ba21SRui Paulo# libeay32MT.lib ssleay32MT.lib Gdi32.lib User32.lib 1773157ba21SRui Paulo 1783157ba21SRui PauloCFLAGS = $(CFLAGS) /I"$(WINPCAPDIR)/Include" /I"$(OPENSSLDIR)\include" 1793157ba21SRui PauloLFLAGS = /libpath:"$(WINPCAPDIR)\Lib" /libpath:"$(OPENSSLDIR)\lib" 1803157ba21SRui Paulo 1813157ba21SRui Paulowpa_supplicant.exe: $(OBJDIR) $(OBJS) $(OBJS2) 1823157ba21SRui Paulo link.exe /out:wpa_supplicant.exe $(LFLAGS) $(OBJS) $(OBJS2) $(LIBS) 1833157ba21SRui Paulo 1843157ba21SRui Paulowpasvc.exe: $(OBJDIR) $(OBJS) $(OBJS3) 1853157ba21SRui Paulo link.exe /out:wpasvc.exe $(LFLAGS) $(OBJS) $(OBJS3) $(LIBS) 1863157ba21SRui Paulo 1873157ba21SRui Paulowpa_cli.exe: $(OBJDIR) $(OBJS_c) 1883157ba21SRui Paulo link.exe /out:wpa_cli.exe $(LFLAGS) $(OBJS_c) $(LIBS) 1893157ba21SRui Paulo 1903157ba21SRui Paulowpa_passphrase.exe: $(OBJDIR) $(OBJS_p) 1913157ba21SRui Paulo link.exe /out:wpa_passphrase.exe $(LFLAGS) $(OBJS_p) $(LIBS) 1923157ba21SRui Paulo 1933157ba21SRui Pauloeapol_test.exe: $(OBJDIR) $(OBJS_t) 1943157ba21SRui Paulo link.exe /out:eapol_test.exe $(LFLAGS) $(OBJS_t) $(LIBS) 1953157ba21SRui Paulo 1963157ba21SRui Paulopreauth_test.exe: $(OBJDIR) $(OBJS_t2) 1973157ba21SRui Paulo link.exe /out:preauth_test.exe $(LFLAGS) $(OBJS_t2) $(LIBS) 1983157ba21SRui Paulo 1993157ba21SRui Paulowin_if_list.exe: $(OBJDIR) $(OBJDIR)\win_if_list.obj 2003157ba21SRui Paulo link.exe /out:win_if_list.exe $(LFLAGS) $(OBJDIR)\win_if_list.obj $(LIBS) 2013157ba21SRui Paulo 2023157ba21SRui Paulo 2033157ba21SRui Paulo{..\src\utils}.c{$(OBJDIR)}.obj:: 2043157ba21SRui Paulo $(CC) $(CFLAGS) $< 2053157ba21SRui Paulo 2063157ba21SRui Paulo{..\src\common}.c{$(OBJDIR)}.obj:: 2073157ba21SRui Paulo $(CC) $(CFLAGS) $< 2083157ba21SRui Paulo 2093157ba21SRui Paulo{..\src\rsn_supp}.c{$(OBJDIR)}.obj:: 2103157ba21SRui Paulo $(CC) $(CFLAGS) $< 2113157ba21SRui Paulo 2123157ba21SRui Paulo{..\src\eapol_supp}.c{$(OBJDIR)}.obj:: 2133157ba21SRui Paulo $(CC) $(CFLAGS) $< 2143157ba21SRui Paulo 2153157ba21SRui Paulo{..\src\crypto}.c{$(OBJDIR)}.obj:: 2163157ba21SRui Paulo $(CC) $(CFLAGS) $< 2173157ba21SRui Paulo 2183157ba21SRui Paulo{..\src\eap_peer}.c{$(OBJDIR)}.obj:: 2193157ba21SRui Paulo $(CC) $(CFLAGS) $< 2203157ba21SRui Paulo 2213157ba21SRui Paulo{..\src\eap_common}.c{$(OBJDIR)}.obj:: 2223157ba21SRui Paulo $(CC) $(CFLAGS) $< 2233157ba21SRui Paulo 2243157ba21SRui Paulo{..\src\drivers}.c{$(OBJDIR)}.obj:: 2253157ba21SRui Paulo $(CC) $(CFLAGS) $< 2263157ba21SRui Paulo 2273157ba21SRui Paulo{..\src\l2_packet}.c{$(OBJDIR)}.obj:: 2283157ba21SRui Paulo $(CC) $(CFLAGS) $< 2293157ba21SRui Paulo 2303157ba21SRui Paulo{.\}.c{$(OBJDIR)}.obj:: 2313157ba21SRui Paulo $(CC) $(CFLAGS) $< 2323157ba21SRui Paulo 2333157ba21SRui Paulo{.\}.cpp{$(OBJDIR)}.obj:: 2343157ba21SRui Paulo $(CC) $(CFLAGS) $< 2353157ba21SRui Paulo 2363157ba21SRui Paulo$(OBJDIR): 2373157ba21SRui Paulo if not exist "$(OBJDIR)" mkdir "$(OBJDIR)" 2383157ba21SRui Paulo 2393157ba21SRui Pauloclean: 2403157ba21SRui Paulo erase $(OBJDIR)\*.obj wpa_supplicant.exe 241