]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/wpa_supplicant/Makefile
This commit was generated by cvs2svn to compensate for changes in r170222,
[FreeBSD/FreeBSD.git] / contrib / wpa_supplicant / Makefile
1 ifndef CC
2 CC=gcc
3 endif
4
5 ifndef CFLAGS
6 CFLAGS = -MMD -O2 -Wall -g
7 endif
8
9 # Include directories for CVS version
10 CFLAGS += -I. -I../utils -I../hostapd
11
12 ALL=wpa_supplicant wpa_passphrase wpa_cli
13
14 all: verify_config $(ALL)
15
16 verify_config:
17         @if [ ! -r .config ]; then \
18                 echo 'Building wpa_supplicant requires a configuration file'; \
19                 echo '(.config). See README for more instructions. You can'; \
20                 echo 'run "cp defconfig .config" to create an example'; \
21                 echo 'configuration.'; \
22                 exit 1; \
23         fi
24
25 mkconfig:
26         @if [ -e .config ]; then \
27                 echo '.config exists - did not replace it'; \
28                 exit 1; \
29         fi
30         echo CONFIG_DRIVER_HOSTAP=y >> .config
31         echo CONFIG_DRIVER_WEXT=y >> .config
32         echo CONFIG_WIRELESS_EXTENSION=y >> .config
33
34 install: all
35         mkdir -p $(DESTDIR)/usr/local/sbin/
36         for i in $(ALL); do cp $$i $(DESTDIR)/usr/local/sbin/$$i; done
37
38 OBJS = config.o \
39         eloop.o common.o md5.o \
40         rc4.o sha1.o
41 OBJS_p = wpa_passphrase.o sha1.o md5.o
42 OBJS_c = wpa_cli.o wpa_ctrl.o
43
44 -include .config
45
46 ifdef CONFIG_EAPOL_TEST
47 CFLAGS += -Werror -DEAPOL_TEST
48 endif
49
50 ifndef CONFIG_BACKEND
51 CONFIG_BACKEND=file
52 endif
53
54 ifeq ($(CONFIG_BACKEND), file)
55 OBJS += config_file.o base64.o
56 CFLAGS += -DCONFIG_BACKEND_FILE
57 endif
58
59 ifdef CONFIG_DRIVER_HOSTAP
60 CFLAGS += -DCONFIG_DRIVER_HOSTAP
61 OBJS_d += driver_hostap.o
62 CONFIG_WIRELESS_EXTENSION=y
63 endif
64
65 ifdef CONFIG_DRIVER_WEXT
66 CFLAGS += -DCONFIG_DRIVER_WEXT
67 CONFIG_WIRELESS_EXTENSION=y
68 endif
69
70 ifdef CONFIG_DRIVER_PRISM54
71 CFLAGS += -DCONFIG_DRIVER_PRISM54
72 OBJS_d += driver_prism54.o
73 CONFIG_WIRELESS_EXTENSION=y
74 endif
75
76 ifdef CONFIG_DRIVER_HERMES
77 CFLAGS += -DCONFIG_DRIVER_HERMES
78 OBJS_d += driver_hermes.o
79 CONFIG_WIRELESS_EXTENSION=y
80 endif
81
82 ifdef CONFIG_DRIVER_MADWIFI
83 CFLAGS += -DCONFIG_DRIVER_MADWIFI
84 OBJS_d += driver_madwifi.o
85 CONFIG_WIRELESS_EXTENSION=y
86 endif
87
88 ifdef CONFIG_DRIVER_ATMEL
89 CFLAGS += -DCONFIG_DRIVER_ATMEL
90 OBJS_d += driver_atmel.o
91 CONFIG_WIRELESS_EXTENSION=y
92 endif
93
94 ifdef CONFIG_DRIVER_NDISWRAPPER
95 CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER
96 OBJS_d += driver_ndiswrapper.o
97 CONFIG_WIRELESS_EXTENSION=y
98 endif
99
100 ifdef CONFIG_DRIVER_BROADCOM
101 CFLAGS += -DCONFIG_DRIVER_BROADCOM
102 OBJS_d += driver_broadcom.o
103 endif
104
105 ifdef CONFIG_DRIVER_IPW
106 CFLAGS += -DCONFIG_DRIVER_IPW
107 OBJS_d += driver_ipw.o
108 CONFIG_WIRELESS_EXTENSION=y
109 endif
110
111 ifdef CONFIG_DRIVER_BSD
112 CFLAGS += -DCONFIG_DRIVER_BSD
113 OBJS_d += driver_bsd.o
114 CONFIG_DNET_PCAP=y
115 CONFIG_L2_FREEBSD=y
116 endif
117
118 ifdef CONFIG_DRIVER_NDIS
119 CFLAGS += -DCONFIG_DRIVER_NDIS
120 OBJS_d += driver_ndis.o driver_ndis_.o
121 CONFIG_DNET_PCAP=y
122 CONFIG_WINPCAP=y
123 endif
124
125 ifdef CONFIG_DRIVER_WIRED
126 CFLAGS += -DCONFIG_DRIVER_WIRED
127 OBJS_d += driver_wired.o
128 endif
129
130 ifdef CONFIG_DRIVER_TEST
131 CFLAGS += -DCONFIG_DRIVER_TEST
132 OBJS_d += driver_test.o
133 endif
134
135 ifdef CONFIG_DNET_PCAP
136 CFLAGS += -DUSE_DNET_PCAP
137 ifdef CONFIG_WINPCAP
138 OBJS += l2_packet_pcap.o
139 CFLAGS += -DCONFIG_WINPCAP
140 LIBS += -lwpcap -lpacket
141 LIBS_w += -lwpcap
142 else
143 ifdef CONFIG_L2_FREEBSD
144 OBJS += l2_packet_freebsd.o
145 LIBS += -lpcap
146 else
147 OBJS += l2_packet_pcap.o
148 LIBS += -ldnet -lpcap
149 endif
150 endif
151 else
152 OBJS += l2_packet_linux.o
153 endif
154
155 ifdef CONFIG_EAP_TLS
156 # EAP-TLS
157 CFLAGS += -DEAP_TLS
158 OBJS += eap_tls.o
159 TLS_FUNCS=y
160 CONFIG_IEEE8021X_EAPOL=y
161 endif
162
163 ifdef CONFIG_EAP_PEAP
164 # EAP-PEAP
165 CFLAGS += -DEAP_PEAP
166 OBJS += eap_peap.o
167 TLS_FUNCS=y
168 CONFIG_EAP_MSCHAPV2=y
169 CONFIG_IEEE8021X_EAPOL=y
170 CONFIG_EAP_TLV=y
171 endif
172
173 ifdef CONFIG_EAP_TTLS
174 # EAP-TTLS
175 CFLAGS += -DEAP_TTLS
176 OBJS += eap_ttls.o
177 MS_FUNCS=y
178 TLS_FUNCS=y
179 CONFIG_EAP_MD5=y
180 CONFIG_IEEE8021X_EAPOL=y
181 endif
182
183 ifdef CONFIG_EAP_MD5
184 # EAP-MD5 (also used by EAP-TTLS)
185 CFLAGS += -DEAP_MD5
186 OBJS += eap_md5.o
187 CONFIG_IEEE8021X_EAPOL=y
188 endif
189
190 # backwards compatibility for old spelling
191 ifdef CONFIG_MSCHAPV2
192 CONFIG_EAP_MSCHAPV2=y
193 endif
194
195 ifdef CONFIG_EAP_MSCHAPV2
196 # EAP-MSCHAPv2 (also used by EAP-PEAP)
197 CFLAGS += -DEAP_MSCHAPv2
198 OBJS += eap_mschapv2.o
199 MS_FUNCS=y
200 CONFIG_IEEE8021X_EAPOL=y
201 endif
202
203 ifdef CONFIG_EAP_GTC
204 # EAP-GTC (also used by EAP-PEAP)
205 CFLAGS += -DEAP_GTC
206 OBJS += eap_gtc.o
207 CONFIG_IEEE8021X_EAPOL=y
208 endif
209
210 ifdef CONFIG_EAP_OTP
211 # EAP-OTP
212 CFLAGS += -DEAP_OTP
213 OBJS += eap_otp.o
214 CONFIG_IEEE8021X_EAPOL=y
215 endif
216
217 ifdef CONFIG_EAP_SIM
218 # EAP-SIM
219 CFLAGS += -DEAP_SIM
220 OBJS += eap_sim.o
221 CONFIG_IEEE8021X_EAPOL=y
222 CONFIG_EAP_SIM_COMMON=y
223 endif
224
225 ifdef CONFIG_EAP_LEAP
226 # EAP-LEAP
227 CFLAGS += -DEAP_LEAP
228 OBJS += eap_leap.o
229 MS_FUNCS=y
230 CONFIG_IEEE8021X_EAPOL=y
231 endif
232
233 ifdef CONFIG_EAP_PSK
234 # EAP-PSK
235 CFLAGS += -DEAP_PSK
236 OBJS += eap_psk.o eap_psk_common.o
237 CONFIG_IEEE8021X_EAPOL=y
238 NEED_AES=y
239 endif
240
241 ifdef CONFIG_EAP_AKA
242 # EAP-AKA
243 CFLAGS += -DEAP_AKA
244 OBJS += eap_aka.o
245 CONFIG_IEEE8021X_EAPOL=y
246 CONFIG_EAP_SIM_COMMON=y
247 endif
248
249 ifdef CONFIG_EAP_SIM_COMMON
250 OBJS += eap_sim_common.o
251 NEED_AES=y
252 endif
253
254 ifdef CONFIG_EAP_TLV
255 # EAP-TLV
256 CFLAGS += -DEAP_TLV
257 OBJS += eap_tlv.o
258 endif
259
260 ifdef CONFIG_EAP_FAST
261 # EAP-FAST
262 CFLAGS += -DEAP_FAST
263 OBJS += eap_fast.o
264 TLS_FUNCS=y
265 endif
266
267 ifdef CONFIG_EAP_PAX
268 # EAP-PAX
269 CFLAGS += -DEAP_PAX
270 OBJS += eap_pax.o eap_pax_common.o
271 CONFIG_IEEE8021X_EAPOL=y
272 endif
273
274 ifdef CONFIG_IEEE8021X_EAPOL
275 # IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
276 CFLAGS += -DIEEE8021X_EAPOL
277 OBJS += eapol_sm.o eap.o
278 endif
279
280 ifdef CONFIG_PCSC
281 # PC/SC interface for smartcards (USIM, GSM SIM)
282 CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
283 OBJS += pcsc_funcs.o
284 # -lpthread may not be needed depending on how pcsc-lite was configured
285 LIBS += -lpcsclite -lpthread
286 endif
287
288 ifndef CONFIG_TLS
289 CONFIG_TLS=openssl
290 endif
291
292 ifdef TLS_FUNCS
293 # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
294 CFLAGS += -DEAP_TLS_FUNCS
295 OBJS += eap_tls_common.o
296 ifeq ($(CONFIG_TLS), openssl)
297 OBJS += tls_openssl.o
298 LIBS += -lssl -lcrypto
299 LIBS_p += -lcrypto
300 endif
301 ifeq ($(CONFIG_TLS), gnutls)
302 OBJS += tls_gnutls.o
303 LIBS += -lgnutls -lgcrypt -lgpg-error
304 LIBS_p += -lgcrypt
305 endif
306 ifeq ($(CONFIG_TLS), schannel)
307 OBJS += tls_schannel.o
308 # Using OpenSSL for crypto at the moment; to be replaced
309 LIBS += -lcrypto
310 LIBS_p += -lcrypto
311 endif
312 ifdef CONFIG_SMARTCARD
313 ifndef CONFIG_NATIVE_WINDOWS
314 ifndef CONFIG_L2_FREEBSD
315 LIBS += -ldl
316 endif
317 endif
318 endif
319 NEED_CRYPTO=y
320 else
321 OBJS += tls_none.o
322 endif
323
324 ifdef CONFIG_PKCS12
325 CFLAGS += -DPKCS12_FUNCS
326 endif
327
328 ifdef CONFIG_SMARTCARD
329 CFLAGS += -DCONFIG_SMARTCARD
330 endif
331
332 ifdef MS_FUNCS
333 OBJS += ms_funcs.o
334 NEED_CRYPTO=y
335 endif
336
337 ifdef NEED_CRYPTO
338 ifndef TLS_FUNCS
339 ifeq ($(CONFIG_TLS), openssl)
340 LIBS += -lcrypto
341 LIBS_p += -lcrypto
342 endif
343 ifeq ($(CONFIG_TLS), gnutls)
344 LIBS += -lgcrypt
345 LIBS_p += -lgcrypt
346 endif
347 ifeq ($(CONFIG_TLS), schannel)
348 # Using OpenSSL for crypto at the moment; to be replaced
349 LIBS += -lcrypto
350 LIBS_p += -lcrypto
351 endif
352 endif
353 ifeq ($(CONFIG_TLS), openssl)
354 OBJS += crypto.o
355 OBJS_p += crypto.o
356 endif
357 ifeq ($(CONFIG_TLS), gnutls)
358 OBJS += crypto_gnutls.o
359 OBJS_p += crypto_gnutls.o
360 endif
361 ifeq ($(CONFIG_TLS), schannel)
362 # Using OpenSSL for crypto at the moment; to be replaced
363 OBJS += crypto.o
364 OBJS_p += crypto.o
365 endif
366 endif
367
368 ifdef CONFIG_WIRELESS_EXTENSION
369 CFLAGS += -DCONFIG_WIRELESS_EXTENSION
370 OBJS_d += driver_wext.o
371 endif
372
373 ifdef CONFIG_CTRL_IFACE
374 CFLAGS += -DCONFIG_CTRL_IFACE
375 OBJS += ctrl_iface.o
376 endif
377
378 ifdef CONFIG_READLINE
379 CFLAGS += -DCONFIG_READLINE
380 LIBS_c += -lncurses -lreadline
381 endif
382
383 ifdef CONFIG_NATIVE_WINDOWS
384 CFLAGS += -DCONFIG_NATIVE_WINDOWS -DCONFIG_CTRL_IFACE_UDP
385 LIBS += -lws2_32 -lgdi32 -lcrypt32
386 LIBS_c += -lws2_32
387 endif
388
389 ifdef CONFIG_NO_STDOUT_DEBUG
390 CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
391 endif
392
393 ifdef CONFIG_IPV6
394 # for eapol_test only
395 CFLAGS += -DCONFIG_IPV6
396 endif
397
398 ifndef CONFIG_NO_WPA
399 OBJS += wpa.o preauth.o
400 NEED_AES=y
401 else
402 CFLAGS += -DCONFIG_NO_WPA
403 endif
404
405 ifdef NEED_AES
406 OBJS += aes_wrap.o
407 endif
408
409 OBJS += wpa_supplicant.o events.o
410 OBJS_t := $(OBJS) eapol_test.o radius.o radius_client.o
411 OBJS_t2 := $(OBJS) preauth_test.o
412 OBJS += main.o drivers.o $(OBJS_d)
413
414 wpa_supplicant: .config $(OBJS)
415         $(CC) -o wpa_supplicant $(OBJS) $(LIBS)
416
417 eapol_test: .config $(OBJS_t)
418         $(CC) -o eapol_test $(OBJS_t) $(LIBS)
419
420 preauth_test: .config $(OBJS_t2) 
421         $(CC) -o preauth_test $(OBJS_t2) $(LIBS)
422
423 wpa_passphrase: $(OBJS_p)
424         $(CC) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
425
426 wpa_cli: $(OBJS_c)
427         $(CC) -o wpa_cli $(OBJS_c) $(LIBS_c)
428
429 win_if_list: win_if_list.c
430         $(CC) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
431
432 # parameters for Microsoft Visual C++ Toolkit 2003 compiler
433 CL=cl
434 CLDIR=C:\Program Files\Microsoft Visual C++ Toolkit 2003
435 PSDKDIR=C:\Program Files\Microsoft Platform SDK for Windows XP SP2
436 CLFLAGS=-O
437 CLLIBS=wbemuuid.lib libcmt.lib kernel32.lib uuid.lib ole32.lib oleaut32.lib \
438         ws2_32.lib
439
440 ndis_events: ndis_events.cpp
441         INCLUDE="$(CLDIR)\include;$(PSDKDIR)\Include" \
442         LIB="$(CLDIR)\lib;$(PSDKDIR)\Lib" \
443         $(CL) $(CLFLAGS) -o ndis_events.exe ndis_events.cpp \
444                 /link -nodefaultlib $(CLLIBS)
445
446 wpa_supplicant.exe: wpa_supplicant
447         mv -f $< $@
448 wpa_cli.exe: wpa_cli
449         mv -f $< $@
450 wpa_passphrase.exe: wpa_passphrase
451         mv -f $< $@
452 win_if_list.exe: win_if_list
453         mv -f $< $@
454 eapol_test.exe: eapol_test
455         mv -f $< $@
456
457 WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
458
459 windows-bin: $(WINALL)
460         $(STRIP) $(WINALL)
461
462 wpa_gui/Makefile:
463         qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro 
464
465 wpa_gui: wpa_gui/Makefile
466         $(MAKE) -C wpa_gui
467
468 TEST_SRC_MS_FUNCS = ms_funcs.c crypto.c sha1.c md5.c
469 test-ms_funcs: $(TEST_SRC_MS_FUNCS)
470         $(CC) -o test-ms_funcs -Wall -Werror $(TEST_SRC_MS_FUNCS) \
471                 -DTEST_MAIN_MS_FUNCS -lcrypto -I../hostapd -I.
472         ./test-ms_funcs
473         rm test-ms_funcs
474
475 TEST_SRC_SHA1 = sha1.c
476 test-sha1: $(TEST_SRC_SHA1)
477         $(CC) -o test-sha1 -Wall -Werror $(TEST_SRC_SHA1) \
478                 -DTEST_MAIN -I../hostad -I.
479         ./test-sha1
480         rm test-sha1
481
482 TEST_SRC_AES_WRAP = aes_wrap.c
483 test-aes_wrap: $(TEST_SRC_AES_WRAP)
484         $(CC) -o test-aes_wrap -Wall -Werror $(TEST_SRC_AES_WRAP) \
485                 -DTEST_MAIN -I../hostad -I.
486         ./test-aes_wrap
487         rm test-aes_wrap
488
489 TEST_SRC_EAP_SIM_COMMON = eap_sim_common.c sha1.c md5.c \
490         aes_wrap.c common.c
491 test-eap_sim_common: $(TEST_SRC_EAP_SIM_COMMON)
492         $(CC) -o test-eap_sim_common -Wall -Werror $(TEST_SRC_EAP_SIM_COMMON) \
493                 -DTEST_MAIN_EAP_SIM_COMMON -I../hostapd -I.
494         ./test-eap_sim_common
495         rm test-eap_sim_common
496
497 tests: test-ms_funcs test-sha1 test-aes_wrap test-eap_sim_common
498
499 clean:
500         rm -f core *~ *.o *.d $(ALL) $(WINALL)
501
502 %.eps: %.fig
503         fig2dev -L eps $*.fig $*.eps
504
505 %.png: %.fig
506         fig2dev -L png -m 3 $*.fig | pngtopnm | pnmscale 0.4 | pnmtopng \
507                 > $*.png
508
509 docs-pics: doc/wpa_supplicant.png doc/wpa_supplicant.eps
510
511 docs: docs-pics
512         doxygen doc/doxygen.full
513         $(MAKE) -C doc/latex
514         cp doc/latex/refman.pdf wpa_supplicant-devel.pdf
515
516 docs-fast: docs-pics
517         doxygen doc/doxygen.fast
518
519 clean-docs:
520         rm -rf doc/latex doc/html
521         rm -f doc/wpa_supplicant.{eps,png} wpa_supplicant-devel.pdf
522
523 -include $(OBJS:%.o=%.d)