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