blob: 06ba18fdb27e266fa2cb75ddacb3832373f7b220 [file] [log] [blame]
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001ifndef CC
2CC=gcc
3endif
4
5ifndef CFLAGS
6CFLAGS = -MMD -O2 -Wall -g
7endif
8
9export LIBDIR ?= /usr/local/lib/
10export BINDIR ?= /usr/local/sbin/
Dmitry Shmidtc55524a2011-07-07 11:18:38 -070011PKG_CONFIG ?= pkg-config
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070012
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -080013CFLAGS += -I$(abspath ../src)
14CFLAGS += -I$(abspath ../src/utils)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070015
Jouni Malinen75ecf522011-06-27 15:19:46 -070016-include .config
17
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -080018ifdef CONFIG_TESTING_OPTIONS
19CFLAGS += -DCONFIG_TESTING_OPTIONS
20CONFIG_WPS_TESTING=y
21CONFIG_TDLS_TESTING=y
22endif
23
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -080024BINALL=wpa_supplicant wpa_cli
Jouni Malinen75ecf522011-06-27 15:19:46 -070025
26ifndef CONFIG_NO_WPA_PASSPHRASE
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -080027BINALL += wpa_passphrase
Jouni Malinen75ecf522011-06-27 15:19:46 -070028endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070029
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -080030ALL = $(BINALL)
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080031ALL += systemd/wpa_supplicant.service
32ALL += systemd/wpa_supplicant@.service
33ALL += systemd/wpa_supplicant-nl80211@.service
34ALL += systemd/wpa_supplicant-wired@.service
35ALL += dbus/fi.epitest.hostap.WPASupplicant.service
36ALL += dbus/fi.w1.wpa_supplicant1.service
37
38
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070039all: verify_config $(ALL) dynamic_eap_methods
40
41verify_config:
42 @if [ ! -r .config ]; then \
43 echo 'Building wpa_supplicant requires a configuration file'; \
44 echo '(.config). See README for more instructions. You can'; \
45 echo 'run "cp defconfig .config" to create an example'; \
46 echo 'configuration.'; \
47 exit 1; \
48 fi
49
50mkconfig:
51 @if [ -f .config ]; then \
52 echo '.config exists - did not replace it'; \
53 exit 1; \
54 fi
55 echo CONFIG_DRIVER_HOSTAP=y >> .config
56 echo CONFIG_DRIVER_WEXT=y >> .config
57
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -080058$(DESTDIR)$(BINDIR)/%: %
59 install -D $(<) $(@)
60
61install: $(addprefix $(DESTDIR)$(BINDIR)/,$(BINALL))
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070062 $(MAKE) -C ../src install
63
Dmitry Shmidt61d9df32012-08-29 16:22:06 -070064ifdef CONFIG_FIPS
65CONFIG_NO_RANDOM_POOL=
66CONFIG_OPENSSL_CMAC=y
67endif
68
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070069OBJS = config.o
70OBJS += notify.o
71OBJS += bss.o
72OBJS += eap_register.o
73OBJS += ../src/utils/common.o
74OBJS += ../src/utils/wpa_debug.o
75OBJS += ../src/utils/wpabuf.o
76OBJS_p = wpa_passphrase.o
77OBJS_p += ../src/utils/common.o
78OBJS_p += ../src/utils/wpa_debug.o
79OBJS_p += ../src/utils/wpabuf.o
80OBJS_c = wpa_cli.o ../src/common/wpa_ctrl.o
81OBJS_c += ../src/utils/wpa_debug.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -080082OBJS_c += ../src/utils/common.o
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -080083OBJS += wmm_ac.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070084
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -070085ifndef CONFIG_OS
86ifdef CONFIG_NATIVE_WINDOWS
87CONFIG_OS=win32
88else
89CONFIG_OS=unix
90endif
91endif
92
93ifeq ($(CONFIG_OS), internal)
94CFLAGS += -DOS_NO_C_LIB_DEFINES
95endif
96
97OBJS += ../src/utils/os_$(CONFIG_OS).o
98OBJS_p += ../src/utils/os_$(CONFIG_OS).o
99OBJS_c += ../src/utils/os_$(CONFIG_OS).o
100
101ifdef CONFIG_WPA_TRACE
102CFLAGS += -DWPA_TRACE
103OBJS += ../src/utils/trace.o
104OBJS_p += ../src/utils/trace.o
105OBJS_c += ../src/utils/trace.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800106OBJS_priv += ../src/utils/trace.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700107LDFLAGS += -rdynamic
108CFLAGS += -funwind-tables
109ifdef CONFIG_WPA_TRACE_BFD
Dmitry Shmidtec58b162014-02-19 12:44:18 -0800110CFLAGS += -DPACKAGE="wpa_supplicant" -DWPA_TRACE_BFD
Dmitry Shmidt13ca8d82014-02-20 10:18:40 -0800111LIBS += -lbfd -ldl -liberty -lz
112LIBS_p += -lbfd -ldl -liberty -lz
113LIBS_c += -lbfd -ldl -liberty -lz
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700114endif
115endif
116
117ifndef CONFIG_ELOOP
118CONFIG_ELOOP=eloop
119endif
120OBJS += ../src/utils/$(CONFIG_ELOOP).o
121OBJS_c += ../src/utils/$(CONFIG_ELOOP).o
122
Dmitry Shmidtfa3fc4a2013-11-21 13:34:38 -0800123ifeq ($(CONFIG_ELOOP), eloop)
124# Using glibc < 2.17 requires -lrt for clock_gettime()
125LIBS += -lrt
126LIBS_c += -lrt
127LIBS_p += -lrt
128endif
129
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -0800130ifdef CONFIG_ELOOP_POLL
131CFLAGS += -DCONFIG_ELOOP_POLL
132endif
133
Dmitry Shmidt50b691d2014-05-21 14:01:45 -0700134ifdef CONFIG_ELOOP_EPOLL
135CFLAGS += -DCONFIG_ELOOP_EPOLL
136endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700137
138ifdef CONFIG_EAPOL_TEST
139CFLAGS += -Werror -DEAPOL_TEST
140endif
141
Dmitry Shmidt01904cf2013-12-05 11:08:35 -0800142ifdef CONFIG_CODE_COVERAGE
143CFLAGS += -O0 -fprofile-arcs -ftest-coverage
144LIBS += -lgcov
145LIBS_c += -lgcov
146LIBS_p += -lgcov
147endif
148
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -0800149ifdef CONFIG_HT_OVERRIDES
150CFLAGS += -DCONFIG_HT_OVERRIDES
151endif
152
Dmitry Shmidt2f023192013-03-12 12:44:17 -0700153ifdef CONFIG_VHT_OVERRIDES
154CFLAGS += -DCONFIG_VHT_OVERRIDES
155endif
156
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700157ifndef CONFIG_BACKEND
158CONFIG_BACKEND=file
159endif
160
161ifeq ($(CONFIG_BACKEND), file)
162OBJS += config_file.o
163ifndef CONFIG_NO_CONFIG_BLOBS
164NEED_BASE64=y
165endif
166CFLAGS += -DCONFIG_BACKEND_FILE
167endif
168
169ifeq ($(CONFIG_BACKEND), winreg)
170OBJS += config_winreg.o
171endif
172
173ifeq ($(CONFIG_BACKEND), none)
174OBJS += config_none.o
175endif
176
177ifdef CONFIG_NO_CONFIG_WRITE
178CFLAGS += -DCONFIG_NO_CONFIG_WRITE
179endif
180
181ifdef CONFIG_NO_CONFIG_BLOBS
182CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
183endif
184
185ifdef CONFIG_NO_SCAN_PROCESSING
186CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
187endif
188
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800189ifdef CONFIG_SUITEB
190CFLAGS += -DCONFIG_SUITEB
191NEED_SHA256=y
192NEED_AES_OMAC1=y
193endif
194
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700195ifdef CONFIG_IEEE80211W
196CFLAGS += -DCONFIG_IEEE80211W
197NEED_SHA256=y
198NEED_AES_OMAC1=y
199endif
200
201ifdef CONFIG_IEEE80211R
202CFLAGS += -DCONFIG_IEEE80211R
203OBJS += ../src/rsn_supp/wpa_ft.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700204NEED_SHA256=y
205NEED_AES_OMAC1=y
206endif
207
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800208ifdef CONFIG_MESH
209NEED_80211_COMMON=y
210NEED_SHA256=y
211NEED_AES_SIV=y
212NEED_AES_OMAC1=y
213NEED_AES_CTR=y
214CONFIG_SAE=y
215CONFIG_AP=y
216CFLAGS += -DCONFIG_MESH
217OBJS += mesh.o
218OBJS += mesh_mpm.o
219OBJS += mesh_rsn.o
220endif
221
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800222ifdef CONFIG_SAE
223CFLAGS += -DCONFIG_SAE
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800224OBJS += ../src/common/sae.o
225NEED_ECC=y
226NEED_DH_GROUPS=y
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800227endif
228
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800229ifdef CONFIG_WNM
230CFLAGS += -DCONFIG_WNM
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700231OBJS += wnm_sta.o
232endif
233
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700234ifdef CONFIG_TDLS
235CFLAGS += -DCONFIG_TDLS
236OBJS += ../src/rsn_supp/tdls.o
237NEED_SHA256=y
238NEED_AES_OMAC1=y
239endif
240
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800241ifdef CONFIG_TDLS_TESTING
242CFLAGS += -DCONFIG_TDLS_TESTING
243endif
244
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700245ifdef CONFIG_PEERKEY
246CFLAGS += -DCONFIG_PEERKEY
247endif
248
249ifndef CONFIG_NO_WPA
250OBJS += ../src/rsn_supp/wpa.o
251OBJS += ../src/rsn_supp/preauth.o
252OBJS += ../src/rsn_supp/pmksa_cache.o
253OBJS += ../src/rsn_supp/peerkey.o
254OBJS += ../src/rsn_supp/wpa_ie.o
255OBJS += ../src/common/wpa_common.o
256NEED_AES=y
257NEED_SHA1=y
258NEED_MD5=y
259NEED_RC4=y
260else
Dmitry Shmidt34af3062013-07-11 10:46:32 -0700261CFLAGS += -DCONFIG_NO_WPA
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700262endif
263
264ifdef CONFIG_IBSS_RSN
265NEED_RSN_AUTHENTICATOR=y
266CFLAGS += -DCONFIG_IBSS_RSN
267OBJS += ibss_rsn.o
268endif
269
270ifdef CONFIG_P2P
271OBJS += p2p_supplicant.o
272OBJS += ../src/p2p/p2p.o
273OBJS += ../src/p2p/p2p_utils.o
274OBJS += ../src/p2p/p2p_parse.o
275OBJS += ../src/p2p/p2p_build.o
276OBJS += ../src/p2p/p2p_go_neg.o
277OBJS += ../src/p2p/p2p_sd.o
278OBJS += ../src/p2p/p2p_pd.o
279OBJS += ../src/p2p/p2p_invitation.o
280OBJS += ../src/p2p/p2p_dev_disc.o
281OBJS += ../src/p2p/p2p_group.o
282OBJS += ../src/ap/p2p_hostapd.o
Dmitry Shmidtcf32e602014-01-28 10:57:39 -0800283OBJS += ../src/utils/bitfield.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700284CFLAGS += -DCONFIG_P2P
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800285NEED_GAS=y
286NEED_OFFCHANNEL=y
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800287CONFIG_WPS=y
288CONFIG_AP=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700289ifdef CONFIG_P2P_STRICT
290CFLAGS += -DCONFIG_P2P_STRICT
291endif
292endif
293
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700294ifdef CONFIG_WIFI_DISPLAY
295CFLAGS += -DCONFIG_WIFI_DISPLAY
296OBJS += wifi_display.o
297endif
298
Dmitry Shmidt04949592012-07-19 12:16:46 -0700299ifdef CONFIG_HS20
300OBJS += hs20_supplicant.o
301CFLAGS += -DCONFIG_HS20
302CONFIG_INTERWORKING=y
Dmitry Shmidtf21452a2014-02-26 10:55:25 -0800303NEED_AES_OMAC1=y
Dmitry Shmidt04949592012-07-19 12:16:46 -0700304endif
305
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800306ifdef CONFIG_INTERWORKING
307OBJS += interworking.o
308CFLAGS += -DCONFIG_INTERWORKING
309NEED_GAS=y
310endif
311
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700312include ../src/drivers/drivers.mak
313ifdef CONFIG_AP
314OBJS_d += $(DRV_BOTH_OBJS)
315CFLAGS += $(DRV_BOTH_CFLAGS)
316LDFLAGS += $(DRV_BOTH_LDFLAGS)
317LIBS += $(DRV_BOTH_LIBS)
318else
319NEED_AP_MLME=
320OBJS_d += $(DRV_WPA_OBJS)
321CFLAGS += $(DRV_WPA_CFLAGS)
322LDFLAGS += $(DRV_WPA_LDFLAGS)
323LIBS += $(DRV_WPA_LIBS)
324endif
325
326ifndef CONFIG_L2_PACKET
327CONFIG_L2_PACKET=linux
328endif
329
330OBJS_l2 += ../src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).o
331
332ifeq ($(CONFIG_L2_PACKET), pcap)
333ifdef CONFIG_WINPCAP
334CFLAGS += -DCONFIG_WINPCAP
335LIBS += -lwpcap -lpacket
336LIBS_w += -lwpcap
337else
338LIBS += -ldnet -lpcap
339endif
340endif
341
342ifeq ($(CONFIG_L2_PACKET), winpcap)
343LIBS += -lwpcap -lpacket
344LIBS_w += -lwpcap
345endif
346
347ifeq ($(CONFIG_L2_PACKET), freebsd)
348LIBS += -lpcap
349endif
350
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800351ifdef CONFIG_ERP
352CFLAGS += -DCONFIG_ERP
353NEED_SHA256=y
354NEED_HMAC_SHA256_KDF=y
355endif
356
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700357ifdef CONFIG_EAP_TLS
358# EAP-TLS
359ifeq ($(CONFIG_EAP_TLS), dyn)
360CFLAGS += -DEAP_TLS_DYNAMIC
361EAPDYN += ../src/eap_peer/eap_tls.so
362else
363CFLAGS += -DEAP_TLS
364OBJS += ../src/eap_peer/eap_tls.o
365OBJS_h += ../src/eap_server/eap_server_tls.o
366endif
367TLS_FUNCS=y
368CONFIG_IEEE8021X_EAPOL=y
369endif
370
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700371ifdef CONFIG_EAP_UNAUTH_TLS
372# EAP-UNAUTH-TLS
373CFLAGS += -DEAP_UNAUTH_TLS
374ifndef CONFIG_EAP_UNAUTH_TLS
375OBJS += ../src/eap_peer/eap_tls.o
376OBJS_h += ../src/eap_server/eap_server_tls.o
377TLS_FUNCS=y
378endif
379CONFIG_IEEE8021X_EAPOL=y
380endif
381
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700382ifdef CONFIG_EAP_PEAP
383# EAP-PEAP
384ifeq ($(CONFIG_EAP_PEAP), dyn)
385CFLAGS += -DEAP_PEAP_DYNAMIC
386EAPDYN += ../src/eap_peer/eap_peap.so
387else
388CFLAGS += -DEAP_PEAP
389OBJS += ../src/eap_peer/eap_peap.o
390OBJS += ../src/eap_common/eap_peap_common.o
391OBJS_h += ../src/eap_server/eap_server_peap.o
392endif
393TLS_FUNCS=y
394CONFIG_IEEE8021X_EAPOL=y
395endif
396
397ifdef CONFIG_EAP_TTLS
398# EAP-TTLS
399ifeq ($(CONFIG_EAP_TTLS), dyn)
400CFLAGS += -DEAP_TTLS_DYNAMIC
401EAPDYN += ../src/eap_peer/eap_ttls.so
402else
403CFLAGS += -DEAP_TTLS
404OBJS += ../src/eap_peer/eap_ttls.o
405OBJS_h += ../src/eap_server/eap_server_ttls.o
406endif
407MS_FUNCS=y
408TLS_FUNCS=y
409CHAP=y
410CONFIG_IEEE8021X_EAPOL=y
411endif
412
413ifdef CONFIG_EAP_MD5
414# EAP-MD5
415ifeq ($(CONFIG_EAP_MD5), dyn)
416CFLAGS += -DEAP_MD5_DYNAMIC
417EAPDYN += ../src/eap_peer/eap_md5.so
418else
419CFLAGS += -DEAP_MD5
420OBJS += ../src/eap_peer/eap_md5.o
421OBJS_h += ../src/eap_server/eap_server_md5.o
422endif
423CHAP=y
424CONFIG_IEEE8021X_EAPOL=y
425endif
426
427# backwards compatibility for old spelling
428ifdef CONFIG_MSCHAPV2
429ifndef CONFIG_EAP_MSCHAPV2
430CONFIG_EAP_MSCHAPV2=y
431endif
432endif
433
434ifdef CONFIG_EAP_MSCHAPV2
435# EAP-MSCHAPv2
436ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
437CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
438EAPDYN += ../src/eap_peer/eap_mschapv2.so
439EAPDYN += ../src/eap_peer/mschapv2.so
440else
441CFLAGS += -DEAP_MSCHAPv2
442OBJS += ../src/eap_peer/eap_mschapv2.o
443OBJS += ../src/eap_peer/mschapv2.o
444OBJS_h += ../src/eap_server/eap_server_mschapv2.o
445endif
446MS_FUNCS=y
447CONFIG_IEEE8021X_EAPOL=y
448endif
449
450ifdef CONFIG_EAP_GTC
451# EAP-GTC
452ifeq ($(CONFIG_EAP_GTC), dyn)
453CFLAGS += -DEAP_GTC_DYNAMIC
454EAPDYN += ../src/eap_peer/eap_gtc.so
455else
456CFLAGS += -DEAP_GTC
457OBJS += ../src/eap_peer/eap_gtc.o
458OBJS_h += ../src/eap_server/eap_server_gtc.o
459endif
460CONFIG_IEEE8021X_EAPOL=y
461endif
462
463ifdef CONFIG_EAP_OTP
464# EAP-OTP
465ifeq ($(CONFIG_EAP_OTP), dyn)
466CFLAGS += -DEAP_OTP_DYNAMIC
467EAPDYN += ../src/eap_peer/eap_otp.so
468else
469CFLAGS += -DEAP_OTP
470OBJS += ../src/eap_peer/eap_otp.o
471endif
472CONFIG_IEEE8021X_EAPOL=y
473endif
474
475ifdef CONFIG_EAP_SIM
476# EAP-SIM
477ifeq ($(CONFIG_EAP_SIM), dyn)
478CFLAGS += -DEAP_SIM_DYNAMIC
479EAPDYN += ../src/eap_peer/eap_sim.so
480else
481CFLAGS += -DEAP_SIM
482OBJS += ../src/eap_peer/eap_sim.o
483OBJS_h += ../src/eap_server/eap_server_sim.o
484endif
485CONFIG_IEEE8021X_EAPOL=y
486CONFIG_EAP_SIM_COMMON=y
487NEED_AES_CBC=y
488endif
489
490ifdef CONFIG_EAP_LEAP
491# EAP-LEAP
492ifeq ($(CONFIG_EAP_LEAP), dyn)
493CFLAGS += -DEAP_LEAP_DYNAMIC
494EAPDYN += ../src/eap_peer/eap_leap.so
495else
496CFLAGS += -DEAP_LEAP
497OBJS += ../src/eap_peer/eap_leap.o
498endif
499MS_FUNCS=y
500CONFIG_IEEE8021X_EAPOL=y
501endif
502
503ifdef CONFIG_EAP_PSK
504# EAP-PSK
505ifeq ($(CONFIG_EAP_PSK), dyn)
506CFLAGS += -DEAP_PSK_DYNAMIC
507EAPDYN += ../src/eap_peer/eap_psk.so
508else
509CFLAGS += -DEAP_PSK
510OBJS += ../src/eap_peer/eap_psk.o ../src/eap_common/eap_psk_common.o
511OBJS_h += ../src/eap_server/eap_server_psk.o
512endif
513CONFIG_IEEE8021X_EAPOL=y
514NEED_AES=y
515NEED_AES_OMAC1=y
516NEED_AES_ENCBLOCK=y
517NEED_AES_EAX=y
518endif
519
520ifdef CONFIG_EAP_AKA
521# EAP-AKA
522ifeq ($(CONFIG_EAP_AKA), dyn)
523CFLAGS += -DEAP_AKA_DYNAMIC
524EAPDYN += ../src/eap_peer/eap_aka.so
525else
526CFLAGS += -DEAP_AKA
527OBJS += ../src/eap_peer/eap_aka.o
528OBJS_h += ../src/eap_server/eap_server_aka.o
529endif
530CONFIG_IEEE8021X_EAPOL=y
531CONFIG_EAP_SIM_COMMON=y
532NEED_AES_CBC=y
533endif
534
Dmitry Shmidtf8623282013-02-20 14:34:59 -0800535ifdef CONFIG_EAP_PROXY
536CFLAGS += -DCONFIG_EAP_PROXY
537OBJS += ../src/eap_peer/eap_proxy_$(CONFIG_EAP_PROXY).o
Dmitry Shmidt61593f02014-04-21 16:27:35 -0700538include eap_proxy_$(CONFIG_EAP_PROXY).mak
Dmitry Shmidtf8623282013-02-20 14:34:59 -0800539CONFIG_IEEE8021X_EAPOL=y
540endif
541
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700542ifdef CONFIG_EAP_AKA_PRIME
543# EAP-AKA'
544ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
545CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
546else
547CFLAGS += -DEAP_AKA_PRIME
548endif
549NEED_SHA256=y
550endif
551
552ifdef CONFIG_EAP_SIM_COMMON
553OBJS += ../src/eap_common/eap_sim_common.o
554OBJS_h += ../src/eap_server/eap_sim_db.o
555NEED_AES=y
556NEED_FIPS186_2_PRF=y
557endif
558
559ifdef CONFIG_EAP_FAST
560# EAP-FAST
561ifeq ($(CONFIG_EAP_FAST), dyn)
562CFLAGS += -DEAP_FAST_DYNAMIC
563EAPDYN += ../src/eap_peer/eap_fast.so
564EAPDYN += ../src/eap_common/eap_fast_common.o
565else
566CFLAGS += -DEAP_FAST
567OBJS += ../src/eap_peer/eap_fast.o ../src/eap_peer/eap_fast_pac.o
568OBJS += ../src/eap_common/eap_fast_common.o
569OBJS_h += ../src/eap_server/eap_server_fast.o
570endif
571TLS_FUNCS=y
572CONFIG_IEEE8021X_EAPOL=y
573NEED_T_PRF=y
574endif
575
576ifdef CONFIG_EAP_PAX
577# EAP-PAX
578ifeq ($(CONFIG_EAP_PAX), dyn)
579CFLAGS += -DEAP_PAX_DYNAMIC
580EAPDYN += ../src/eap_peer/eap_pax.so
581else
582CFLAGS += -DEAP_PAX
583OBJS += ../src/eap_peer/eap_pax.o ../src/eap_common/eap_pax_common.o
584OBJS_h += ../src/eap_server/eap_server_pax.o
585endif
586CONFIG_IEEE8021X_EAPOL=y
587endif
588
589ifdef CONFIG_EAP_SAKE
590# EAP-SAKE
591ifeq ($(CONFIG_EAP_SAKE), dyn)
592CFLAGS += -DEAP_SAKE_DYNAMIC
593EAPDYN += ../src/eap_peer/eap_sake.so
594else
595CFLAGS += -DEAP_SAKE
596OBJS += ../src/eap_peer/eap_sake.o ../src/eap_common/eap_sake_common.o
597OBJS_h += ../src/eap_server/eap_server_sake.o
598endif
599CONFIG_IEEE8021X_EAPOL=y
600endif
601
602ifdef CONFIG_EAP_GPSK
603# EAP-GPSK
604ifeq ($(CONFIG_EAP_GPSK), dyn)
605CFLAGS += -DEAP_GPSK_DYNAMIC
606EAPDYN += ../src/eap_peer/eap_gpsk.so
607else
608CFLAGS += -DEAP_GPSK
609OBJS += ../src/eap_peer/eap_gpsk.o ../src/eap_common/eap_gpsk_common.o
610OBJS_h += ../src/eap_server/eap_server_gpsk.o
611endif
612CONFIG_IEEE8021X_EAPOL=y
613ifdef CONFIG_EAP_GPSK_SHA256
614CFLAGS += -DEAP_GPSK_SHA256
615endif
616NEED_SHA256=y
617NEED_AES_OMAC1=y
618endif
619
620ifdef CONFIG_EAP_PWD
621CFLAGS += -DEAP_PWD
622OBJS += ../src/eap_peer/eap_pwd.o ../src/eap_common/eap_pwd_common.o
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800623OBJS_h += ../src/eap_server/eap_server_pwd.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700624CONFIG_IEEE8021X_EAPOL=y
625NEED_SHA256=y
626endif
627
Dmitry Shmidt34af3062013-07-11 10:46:32 -0700628ifdef CONFIG_EAP_EKE
629# EAP-EKE
630ifeq ($(CONFIG_EAP_EKE), dyn)
631CFLAGS += -DEAP_EKE_DYNAMIC
632EAPDYN += ../src/eap_peer/eap_eke.so
633else
634CFLAGS += -DEAP_EKE
635OBJS += ../src/eap_peer/eap_eke.o ../src/eap_common/eap_eke_common.o
636OBJS_h += ../src/eap_server/eap_server_eke.o
637endif
638CONFIG_IEEE8021X_EAPOL=y
639NEED_DH_GROUPS=y
640NEED_DH_GROUPS_ALL=y
641NEED_SHA256=y
642endif
643
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700644ifdef CONFIG_WPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700645# EAP-WSC
646CFLAGS += -DCONFIG_WPS -DEAP_WSC
647OBJS += wps_supplicant.o
648OBJS += ../src/utils/uuid.o
649OBJS += ../src/eap_peer/eap_wsc.o ../src/eap_common/eap_wsc_common.o
650OBJS += ../src/wps/wps.o
651OBJS += ../src/wps/wps_common.o
652OBJS += ../src/wps/wps_attr_parse.o
653OBJS += ../src/wps/wps_attr_build.o
654OBJS += ../src/wps/wps_attr_process.o
655OBJS += ../src/wps/wps_dev_attr.o
656OBJS += ../src/wps/wps_enrollee.o
657OBJS += ../src/wps/wps_registrar.o
658OBJS_h += ../src/eap_server/eap_server_wsc.o
659CONFIG_IEEE8021X_EAPOL=y
660NEED_DH_GROUPS=y
661NEED_SHA256=y
662NEED_BASE64=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700663NEED_AES_CBC=y
664NEED_MODEXP=y
665
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700666ifdef CONFIG_WPS_NFC
667CFLAGS += -DCONFIG_WPS_NFC
668OBJS += ../src/wps/ndef.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700669NEED_WPS_OOB=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700670endif
671
672ifdef NEED_WPS_OOB
673CFLAGS += -DCONFIG_WPS_OOB
674endif
675
676ifdef CONFIG_WPS_ER
677CONFIG_WPS_UPNP=y
678CFLAGS += -DCONFIG_WPS_ER
679OBJS += ../src/wps/wps_er.o
680OBJS += ../src/wps/wps_er_ssdp.o
681endif
682
683ifdef CONFIG_WPS_UPNP
684CFLAGS += -DCONFIG_WPS_UPNP
685OBJS += ../src/wps/wps_upnp.o
686OBJS += ../src/wps/wps_upnp_ssdp.o
687OBJS += ../src/wps/wps_upnp_web.o
688OBJS += ../src/wps/wps_upnp_event.o
689OBJS += ../src/wps/wps_upnp_ap.o
690OBJS += ../src/wps/upnp_xml.o
691OBJS += ../src/wps/httpread.o
692OBJS += ../src/wps/http_client.o
693OBJS += ../src/wps/http_server.o
694endif
695
696ifdef CONFIG_WPS_STRICT
697CFLAGS += -DCONFIG_WPS_STRICT
698OBJS += ../src/wps/wps_validate.o
699endif
700
701ifdef CONFIG_WPS_TESTING
702CFLAGS += -DCONFIG_WPS_TESTING
703endif
704
705ifdef CONFIG_WPS_REG_DISABLE_OPEN
706CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
707endif
708
709endif
710
711ifdef CONFIG_EAP_IKEV2
712# EAP-IKEv2
713ifeq ($(CONFIG_EAP_IKEV2), dyn)
714CFLAGS += -DEAP_IKEV2_DYNAMIC
715EAPDYN += ../src/eap_peer/eap_ikev2.so ../src/eap_peer/ikev2.o
716EAPDYN += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
717else
718CFLAGS += -DEAP_IKEV2
719OBJS += ../src/eap_peer/eap_ikev2.o ../src/eap_peer/ikev2.o
720OBJS += ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.o
721OBJS_h += ../src/eap_server/eap_server_ikev2.o
722OBJS_h += ../src/eap_server/ikev2.o
723endif
724CONFIG_IEEE8021X_EAPOL=y
725NEED_DH_GROUPS=y
726NEED_DH_GROUPS_ALL=y
727NEED_MODEXP=y
728NEED_CIPHER=y
729endif
730
731ifdef CONFIG_EAP_VENDOR_TEST
732ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
733CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
734EAPDYN += ../src/eap_peer/eap_vendor_test.so
735else
736CFLAGS += -DEAP_VENDOR_TEST
737OBJS += ../src/eap_peer/eap_vendor_test.o
738OBJS_h += ../src/eap_server/eap_server_vendor_test.o
739endif
740CONFIG_IEEE8021X_EAPOL=y
741endif
742
743ifdef CONFIG_EAP_TNC
744# EAP-TNC
745CFLAGS += -DEAP_TNC
746OBJS += ../src/eap_peer/eap_tnc.o
747OBJS += ../src/eap_peer/tncc.o
748OBJS_h += ../src/eap_server/eap_server_tnc.o
749OBJS_h += ../src/eap_server/tncs.o
750NEED_BASE64=y
751ifndef CONFIG_NATIVE_WINDOWS
752ifndef CONFIG_DRIVER_BSD
753LIBS += -ldl
754endif
755endif
756endif
757
758ifdef CONFIG_IEEE8021X_EAPOL
759# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
760CFLAGS += -DIEEE8021X_EAPOL
761OBJS += ../src/eapol_supp/eapol_supp_sm.o
762OBJS += ../src/eap_peer/eap.o ../src/eap_peer/eap_methods.o
763NEED_EAP_COMMON=y
764ifdef CONFIG_DYNAMIC_EAP_METHODS
765CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
766LIBS += -ldl -rdynamic
767endif
768endif
769
Dmitry Shmidt5a1480c2014-05-12 09:46:02 -0700770ifdef CONFIG_MACSEC
771CFLAGS += -DCONFIG_MACSEC
772NEED_AES_ENCBLOCK=y
773NEED_AES_UNWRAP=y
774NEED_AES_WRAP=y
775NEED_AES_OMAC1=y
776OBJS += wpas_kay.o
777OBJS += ../src/pae/ieee802_1x_cp.o
778OBJS += ../src/pae/ieee802_1x_kay.o
779OBJS += ../src/pae/ieee802_1x_key.o
780OBJS += ../src/pae/ieee802_1x_secy_ops.o
781endif
782
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700783ifdef CONFIG_AP
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700784NEED_EAP_COMMON=y
785NEED_RSN_AUTHENTICATOR=y
786CFLAGS += -DCONFIG_AP
787OBJS += ap.o
788CFLAGS += -DCONFIG_NO_RADIUS
789CFLAGS += -DCONFIG_NO_ACCOUNTING
790CFLAGS += -DCONFIG_NO_VLAN
791OBJS += ../src/ap/hostapd.o
792OBJS += ../src/ap/wpa_auth_glue.o
793OBJS += ../src/ap/utils.o
794OBJS += ../src/ap/authsrv.o
795OBJS += ../src/ap/ap_config.o
796OBJS += ../src/utils/ip_addr.o
797OBJS += ../src/ap/sta_info.o
798OBJS += ../src/ap/tkip_countermeasures.o
799OBJS += ../src/ap/ap_mlme.o
800OBJS += ../src/ap/ieee802_1x.o
801OBJS += ../src/eapol_auth/eapol_auth_sm.o
802OBJS += ../src/ap/ieee802_11_auth.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800803OBJS += ../src/ap/ieee802_11_shared.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700804OBJS += ../src/ap/drv_callbacks.o
805OBJS += ../src/ap/ap_drv_ops.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800806OBJS += ../src/ap/beacon.o
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -0800807OBJS += ../src/ap/bss_load.o
Dmitry Shmidtd5e49232012-12-03 15:08:10 -0800808OBJS += ../src/ap/eap_user_db.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700809ifdef CONFIG_IEEE80211N
810OBJS += ../src/ap/ieee802_11_ht.o
Dmitry Shmidt68d0e3e2013-10-28 17:59:21 -0700811ifdef CONFIG_IEEE80211AC
812OBJS += ../src/ap/ieee802_11_vht.o
813endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700814endif
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800815ifdef CONFIG_WNM
816OBJS += ../src/ap/wnm_ap.o
817endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700818ifdef CONFIG_CTRL_IFACE
819OBJS += ../src/ap/ctrl_iface_ap.o
820endif
821
822CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
823OBJS += ../src/eap_server/eap_server.o
824OBJS += ../src/eap_server/eap_server_identity.o
825OBJS += ../src/eap_server/eap_server_methods.o
826
827ifdef CONFIG_IEEE80211N
828CFLAGS += -DCONFIG_IEEE80211N
Dmitry Shmidt68d0e3e2013-10-28 17:59:21 -0700829ifdef CONFIG_IEEE80211AC
830CFLAGS += -DCONFIG_IEEE80211AC
831endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700832endif
833
834ifdef NEED_AP_MLME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700835OBJS += ../src/ap/wmm.o
836OBJS += ../src/ap/ap_list.o
837OBJS += ../src/ap/ieee802_11.o
838OBJS += ../src/ap/hw_features.o
Dmitry Shmidt051af732013-10-22 13:52:46 -0700839OBJS += ../src/ap/dfs.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700840CFLAGS += -DNEED_AP_MLME
841endif
842ifdef CONFIG_WPS
843CFLAGS += -DEAP_SERVER_WSC
844OBJS += ../src/ap/wps_hostapd.o
845OBJS += ../src/eap_server/eap_server_wsc.o
846endif
Dmitry Shmidt04949592012-07-19 12:16:46 -0700847ifdef CONFIG_INTERWORKING
848OBJS += ../src/ap/gas_serv.o
849endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700850ifdef CONFIG_HS20
851OBJS += ../src/ap/hs20.o
852endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700853endif
854
855ifdef NEED_RSN_AUTHENTICATOR
856CFLAGS += -DCONFIG_NO_RADIUS
857NEED_AES_WRAP=y
858OBJS += ../src/ap/wpa_auth.o
859OBJS += ../src/ap/wpa_auth_ie.o
860OBJS += ../src/ap/pmksa_cache_auth.o
861ifdef CONFIG_IEEE80211R
862OBJS += ../src/ap/wpa_auth_ft.o
863endif
864ifdef CONFIG_PEERKEY
865OBJS += ../src/ap/peerkey_auth.o
866endif
867endif
868
869ifdef CONFIG_EAP_SERVER
870CFLAGS += -DEAP_SERVER
871OBJS_h += ../src/eap_server/eap_server.o
872OBJS_h += ../src/eap_server/eap_server_identity.o
873OBJS_h += ../src/eap_server/eap_server_methods.o
874endif
875
876ifdef CONFIG_RADIUS_CLIENT
877OBJS_h += ../src/utils/ip_addr.o
878OBJS_h += ../src/radius/radius.o
879OBJS_h += ../src/radius/radius_client.o
880endif
881
882ifdef CONFIG_AUTHENTICATOR
883OBJS_h += ../src/eapol_auth/eapol_auth_sm.o
884OBJS_h += ../src/ap/ieee802_1x.o
885endif
886
887ifdef CONFIG_WPA_AUTHENTICATOR
888OBJS_h += ../src/ap/wpa_auth.o
889OBJS_h += ../src/ap/wpa_auth_ie.o
890OBJS_h += ../src/ap/pmksa_cache_auth.o
891ifdef CONFIG_IEEE80211R
892OBJS_h += ../src/ap/wpa_auth_ft.o
893endif
894ifdef CONFIG_PEERKEY
895OBJS_h += ../src/ap/peerkey_auth.o
896endif
897endif
898
899ifdef CONFIG_PCSC
900# PC/SC interface for smartcards (USIM, GSM SIM)
901CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
902OBJS += ../src/utils/pcsc_funcs.o
903# -lpthread may not be needed depending on how pcsc-lite was configured
904ifdef CONFIG_NATIVE_WINDOWS
905#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
906#dynamic symbol loading that is now used in pcsc_funcs.c
907#LIBS += -lwinscard
908else
909LIBS += -lpcsclite -lpthread
910endif
911endif
912
913ifdef CONFIG_SIM_SIMULATOR
914CFLAGS += -DCONFIG_SIM_SIMULATOR
915NEED_MILENAGE=y
916endif
917
918ifdef CONFIG_USIM_SIMULATOR
919CFLAGS += -DCONFIG_USIM_SIMULATOR
920NEED_MILENAGE=y
921endif
922
923ifdef NEED_MILENAGE
924OBJS += ../src/crypto/milenage.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800925NEED_AES_ENCBLOCK=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700926endif
927
928ifdef CONFIG_PKCS12
929CFLAGS += -DPKCS12_FUNCS
930endif
931
932ifdef CONFIG_SMARTCARD
933CFLAGS += -DCONFIG_SMARTCARD
934endif
935
936ifdef MS_FUNCS
937OBJS += ../src/crypto/ms_funcs.o
938NEED_DES=y
939NEED_MD4=y
940endif
941
942ifdef CHAP
943OBJS += ../src/eap_common/chap.o
944endif
945
946ifdef TLS_FUNCS
947NEED_DES=y
948# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
949OBJS += ../src/eap_peer/eap_tls_common.o
950OBJS_h += ../src/eap_server/eap_server_tls_common.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700951ifndef CONFIG_FIPS
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700952NEED_TLS_PRF=y
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -0800953NEED_SHA1=y
954NEED_MD5=y
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700955endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700956endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700957
958ifndef CONFIG_TLS
959CONFIG_TLS=openssl
960endif
961
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -0800962ifdef CONFIG_TLSV11
963CFLAGS += -DCONFIG_TLSV11
964endif
965
966ifdef CONFIG_TLSV12
967CFLAGS += -DCONFIG_TLSV12
968NEED_SHA256=y
969endif
970
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700971ifeq ($(CONFIG_TLS), openssl)
972ifdef TLS_FUNCS
973CFLAGS += -DEAP_TLS_OPENSSL
974OBJS += ../src/crypto/tls_openssl.o
975LIBS += -lssl
976endif
977OBJS += ../src/crypto/crypto_openssl.o
978OBJS_p += ../src/crypto/crypto_openssl.o
979ifdef NEED_FIPS186_2_PRF
980OBJS += ../src/crypto/fips_prf_openssl.o
981endif
982LIBS += -lcrypto
983LIBS_p += -lcrypto
Dmitry Shmidt61d9df32012-08-29 16:22:06 -0700984ifdef CONFIG_TLS_ADD_DL
985LIBS += -ldl
986LIBS_p += -ldl
987endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700988endif
989
990ifeq ($(CONFIG_TLS), gnutls)
991ifdef TLS_FUNCS
992OBJS += ../src/crypto/tls_gnutls.o
993LIBS += -lgnutls -lgpg-error
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -0700994endif
995OBJS += ../src/crypto/crypto_gnutls.o
996OBJS_p += ../src/crypto/crypto_gnutls.o
997ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -0700998OBJS += ../src/crypto/fips_prf_internal.o
999SHA1OBJS += ../src/crypto/sha1-internal.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001000endif
1001LIBS += -lgcrypt
1002LIBS_p += -lgcrypt
1003CONFIG_INTERNAL_SHA256=y
1004CONFIG_INTERNAL_RC4=y
1005CONFIG_INTERNAL_DH_GROUP5=y
1006endif
1007
1008ifeq ($(CONFIG_TLS), schannel)
1009ifdef TLS_FUNCS
1010OBJS += ../src/crypto/tls_schannel.o
1011endif
1012OBJS += ../src/crypto/crypto_cryptoapi.o
1013OBJS_p += ../src/crypto/crypto_cryptoapi.o
1014ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -07001015OBJS += ../src/crypto/fips_prf_internal.o
1016SHA1OBJS += ../src/crypto/sha1-internal.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001017endif
1018CONFIG_INTERNAL_SHA256=y
1019CONFIG_INTERNAL_RC4=y
1020CONFIG_INTERNAL_DH_GROUP5=y
1021endif
1022
1023ifeq ($(CONFIG_TLS), nss)
1024ifdef TLS_FUNCS
1025OBJS += ../src/crypto/tls_nss.o
1026LIBS += -lssl3
1027endif
1028OBJS += ../src/crypto/crypto_nss.o
1029OBJS_p += ../src/crypto/crypto_nss.o
1030ifdef NEED_FIPS186_2_PRF
Dmitry Shmidt98660862014-03-11 17:26:21 -07001031OBJS += ../src/crypto/fips_prf_internal.o
1032SHA1OBJS += ../src/crypto/sha1-internal.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001033endif
1034LIBS += -lnss3
1035LIBS_p += -lnss3
1036CONFIG_INTERNAL_MD4=y
1037CONFIG_INTERNAL_DH_GROUP5=y
1038endif
1039
1040ifeq ($(CONFIG_TLS), internal)
1041ifndef CONFIG_CRYPTO
1042CONFIG_CRYPTO=internal
1043endif
1044ifdef TLS_FUNCS
1045OBJS += ../src/crypto/crypto_internal-rsa.o
1046OBJS += ../src/crypto/tls_internal.o
1047OBJS += ../src/tls/tlsv1_common.o
1048OBJS += ../src/tls/tlsv1_record.o
1049OBJS += ../src/tls/tlsv1_cred.o
1050OBJS += ../src/tls/tlsv1_client.o
1051OBJS += ../src/tls/tlsv1_client_write.o
1052OBJS += ../src/tls/tlsv1_client_read.o
1053OBJS += ../src/tls/asn1.o
1054OBJS += ../src/tls/rsa.o
1055OBJS += ../src/tls/x509v3.o
1056OBJS += ../src/tls/pkcs1.o
1057OBJS += ../src/tls/pkcs5.o
1058OBJS += ../src/tls/pkcs8.o
1059NEED_SHA256=y
1060NEED_BASE64=y
1061NEED_TLS_PRF=y
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001062ifdef CONFIG_TLSV12
1063NEED_TLS_PRF_SHA256=y
1064endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001065NEED_MODEXP=y
1066NEED_CIPHER=y
1067CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
1068endif
1069ifdef NEED_CIPHER
1070NEED_DES=y
1071OBJS += ../src/crypto/crypto_internal-cipher.o
1072endif
1073ifdef NEED_MODEXP
1074OBJS += ../src/crypto/crypto_internal-modexp.o
1075OBJS += ../src/tls/bignum.o
1076endif
1077ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1078OBJS += ../src/crypto/crypto_libtomcrypt.o
1079OBJS_p += ../src/crypto/crypto_libtomcrypt.o
1080LIBS += -ltomcrypt -ltfm
1081LIBS_p += -ltomcrypt -ltfm
1082CONFIG_INTERNAL_SHA256=y
1083CONFIG_INTERNAL_RC4=y
1084CONFIG_INTERNAL_DH_GROUP5=y
1085endif
1086ifeq ($(CONFIG_CRYPTO), internal)
1087OBJS += ../src/crypto/crypto_internal.o
1088OBJS_p += ../src/crypto/crypto_internal.o
1089NEED_AES_ENC=y
1090CFLAGS += -DCONFIG_CRYPTO_INTERNAL
1091ifdef CONFIG_INTERNAL_LIBTOMMATH
1092CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
1093ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
1094CFLAGS += -DLTM_FAST
1095endif
1096else
1097LIBS += -ltommath
1098LIBS_p += -ltommath
1099endif
1100CONFIG_INTERNAL_AES=y
1101CONFIG_INTERNAL_DES=y
1102CONFIG_INTERNAL_SHA1=y
1103CONFIG_INTERNAL_MD4=y
1104CONFIG_INTERNAL_MD5=y
1105CONFIG_INTERNAL_SHA256=y
1106CONFIG_INTERNAL_RC4=y
1107CONFIG_INTERNAL_DH_GROUP5=y
1108endif
1109ifeq ($(CONFIG_CRYPTO), cryptoapi)
1110OBJS += ../src/crypto/crypto_cryptoapi.o
1111OBJS_p += ../src/crypto/crypto_cryptoapi.o
1112CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
1113CONFIG_INTERNAL_SHA256=y
1114CONFIG_INTERNAL_RC4=y
1115endif
1116endif
1117
1118ifeq ($(CONFIG_TLS), none)
1119ifdef TLS_FUNCS
1120OBJS += ../src/crypto/tls_none.o
1121CFLAGS += -DEAP_TLS_NONE
1122CONFIG_INTERNAL_AES=y
1123CONFIG_INTERNAL_SHA1=y
1124CONFIG_INTERNAL_MD5=y
1125endif
1126OBJS += ../src/crypto/crypto_none.o
1127OBJS_p += ../src/crypto/crypto_none.o
1128CONFIG_INTERNAL_SHA256=y
1129CONFIG_INTERNAL_RC4=y
1130endif
1131
1132ifdef TLS_FUNCS
1133ifdef CONFIG_SMARTCARD
1134ifndef CONFIG_NATIVE_WINDOWS
1135ifneq ($(CONFIG_L2_PACKET), freebsd)
1136LIBS += -ldl
1137endif
1138endif
1139endif
1140endif
1141
1142ifndef TLS_FUNCS
1143OBJS += ../src/crypto/tls_none.o
1144ifeq ($(CONFIG_TLS), internal)
1145CONFIG_INTERNAL_AES=y
1146CONFIG_INTERNAL_SHA1=y
1147CONFIG_INTERNAL_MD5=y
1148CONFIG_INTERNAL_RC4=y
1149endif
1150endif
1151
1152AESOBJS = # none so far (see below)
1153ifdef CONFIG_INTERNAL_AES
1154AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o
1155endif
1156
1157AESOBJS += ../src/crypto/aes-unwrap.o
1158ifdef NEED_AES_EAX
1159AESOBJS += ../src/crypto/aes-eax.o
1160NEED_AES_CTR=y
1161endif
1162ifdef NEED_AES_CTR
1163AESOBJS += ../src/crypto/aes-ctr.o
1164endif
1165ifdef NEED_AES_ENCBLOCK
1166AESOBJS += ../src/crypto/aes-encblock.o
1167endif
1168ifdef NEED_AES_OMAC1
1169NEED_AES_ENC=y
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001170ifdef CONFIG_OPENSSL_CMAC
1171CFLAGS += -DCONFIG_OPENSSL_CMAC
1172else
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001173AESOBJS += ../src/crypto/aes-omac1.o
1174endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001175endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001176ifdef NEED_AES_SIV
1177AESOBJS += ../src/crypto/aes-siv.o
1178endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001179ifdef NEED_AES_WRAP
1180NEED_AES_ENC=y
1181AESOBJS += ../src/crypto/aes-wrap.o
1182endif
1183ifdef NEED_AES_CBC
1184NEED_AES_ENC=y
1185AESOBJS += ../src/crypto/aes-cbc.o
1186endif
1187ifdef NEED_AES_ENC
1188ifdef CONFIG_INTERNAL_AES
1189AESOBJS += ../src/crypto/aes-internal-enc.o
1190endif
1191endif
1192ifdef NEED_AES
1193OBJS += $(AESOBJS)
1194endif
1195
1196ifdef NEED_SHA1
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001197ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001198SHA1OBJS += ../src/crypto/sha1.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001199endif
1200SHA1OBJS += ../src/crypto/sha1-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001201ifdef CONFIG_INTERNAL_SHA1
1202SHA1OBJS += ../src/crypto/sha1-internal.o
1203ifdef NEED_FIPS186_2_PRF
1204SHA1OBJS += ../src/crypto/fips_prf_internal.o
1205endif
1206endif
Jouni Malinen75ecf522011-06-27 15:19:46 -07001207ifdef CONFIG_NO_WPA_PASSPHRASE
1208CFLAGS += -DCONFIG_NO_PBKDF2
1209else
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001210ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001211SHA1OBJS += ../src/crypto/sha1-pbkdf2.o
1212endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001213endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001214ifdef NEED_T_PRF
1215SHA1OBJS += ../src/crypto/sha1-tprf.o
1216endif
1217ifdef NEED_TLS_PRF
1218SHA1OBJS += ../src/crypto/sha1-tlsprf.o
1219endif
1220endif
1221
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001222ifndef CONFIG_FIPS
1223MD5OBJS += ../src/crypto/md5.o
1224endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001225ifdef NEED_MD5
1226ifdef CONFIG_INTERNAL_MD5
1227MD5OBJS += ../src/crypto/md5-internal.o
1228endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001229OBJS += $(MD5OBJS)
1230OBJS_p += $(MD5OBJS)
1231endif
1232
1233ifdef NEED_MD4
1234ifdef CONFIG_INTERNAL_MD4
1235OBJS += ../src/crypto/md4-internal.o
1236endif
1237endif
1238
1239DESOBJS = # none needed when not internal
1240ifdef NEED_DES
1241ifdef CONFIG_INTERNAL_DES
1242DESOBJS += ../src/crypto/des-internal.o
1243endif
1244endif
1245
1246ifdef NEED_RC4
1247ifdef CONFIG_INTERNAL_RC4
1248OBJS += ../src/crypto/rc4.o
1249endif
1250endif
1251
1252SHA256OBJS = # none by default
1253ifdef NEED_SHA256
1254CFLAGS += -DCONFIG_SHA256
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001255ifneq ($(CONFIG_TLS), openssl)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001256SHA256OBJS += ../src/crypto/sha256.o
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001257endif
1258SHA256OBJS += ../src/crypto/sha256-prf.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001259ifdef CONFIG_INTERNAL_SHA256
1260SHA256OBJS += ../src/crypto/sha256-internal.o
1261endif
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001262ifdef NEED_TLS_PRF_SHA256
1263SHA256OBJS += ../src/crypto/sha256-tlsprf.o
1264endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001265ifdef NEED_HMAC_SHA256_KDF
1266OBJS += ../src/crypto/sha256-kdf.o
1267endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001268OBJS += $(SHA256OBJS)
1269endif
1270
1271ifdef NEED_DH_GROUPS
1272OBJS += ../src/crypto/dh_groups.o
1273endif
1274ifdef NEED_DH_GROUPS_ALL
1275CFLAGS += -DALL_DH_GROUPS
1276endif
1277ifdef CONFIG_INTERNAL_DH_GROUP5
1278ifdef NEED_DH_GROUPS
1279OBJS += ../src/crypto/dh_group5.o
1280endif
1281endif
1282
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -08001283ifdef NEED_ECC
1284CFLAGS += -DCONFIG_ECC
1285endif
1286
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001287ifdef CONFIG_NO_RANDOM_POOL
1288CFLAGS += -DCONFIG_NO_RANDOM_POOL
1289else
1290OBJS += ../src/crypto/random.o
1291endif
1292
1293ifdef CONFIG_CTRL_IFACE
1294ifeq ($(CONFIG_CTRL_IFACE), y)
1295ifdef CONFIG_NATIVE_WINDOWS
1296CONFIG_CTRL_IFACE=named_pipe
1297else
1298CONFIG_CTRL_IFACE=unix
1299endif
1300endif
1301CFLAGS += -DCONFIG_CTRL_IFACE
1302ifeq ($(CONFIG_CTRL_IFACE), unix)
1303CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1304endif
1305ifeq ($(CONFIG_CTRL_IFACE), udp)
1306CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1307endif
Dmitry Shmidtf21452a2014-02-26 10:55:25 -08001308ifeq ($(CONFIG_CTRL_IFACE), udp6)
1309CONFIG_CTRL_IFACE=udp
1310CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1311CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
1312endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001313ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1314CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1315endif
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001316ifeq ($(CONFIG_CTRL_IFACE), udp-remote)
1317CONFIG_CTRL_IFACE=udp
1318CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1319CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1320endif
Dmitry Shmidtf21452a2014-02-26 10:55:25 -08001321ifeq ($(CONFIG_CTRL_IFACE), udp6-remote)
1322CONFIG_CTRL_IFACE=udp
1323CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1324CFLAGS += -DCONFIG_CTRL_IFACE_UDP_REMOTE
1325CFLAGS += -DCONFIG_CTRL_IFACE_UDP_IPV6
1326endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001327OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o
1328endif
1329
1330ifdef CONFIG_CTRL_IFACE_DBUS
1331DBUS=y
1332DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
1333DBUS_OBJS += dbus/dbus_old.o dbus/dbus_old_handlers.o
1334ifdef CONFIG_WPS
1335DBUS_OBJS += dbus/dbus_old_handlers_wps.o
1336endif
1337DBUS_OBJS += dbus/dbus_dict_helpers.o
1338ifndef DBUS_LIBS
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001339DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001340endif
1341ifndef DBUS_INCLUDE
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001342DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001343endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001344DBUS_CFLAGS += $(DBUS_INCLUDE)
1345endif
1346
1347ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1348DBUS=y
1349DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1350DBUS_OBJS ?= dbus/dbus_dict_helpers.o
1351DBUS_OBJS += dbus/dbus_new_helpers.o
1352DBUS_OBJS += dbus/dbus_new.o dbus/dbus_new_handlers.o
1353ifdef CONFIG_WPS
1354DBUS_OBJS += dbus/dbus_new_handlers_wps.o
1355endif
Jouni Malinen75ecf522011-06-27 15:19:46 -07001356ifdef CONFIG_P2P
1357DBUS_OBJS += dbus/dbus_new_handlers_p2p.o
1358endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001359ifndef DBUS_LIBS
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001360DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001361endif
1362ifndef DBUS_INCLUDE
Dmitry Shmidtc55524a2011-07-07 11:18:38 -07001363DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001364endif
1365ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1366DBUS_OBJS += dbus/dbus_new_introspect.o
1367DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1368endif
1369DBUS_CFLAGS += $(DBUS_INCLUDE)
1370endif
1371
1372ifdef DBUS
1373DBUS_CFLAGS += -DCONFIG_DBUS
1374DBUS_OBJS += dbus/dbus_common.o
1375endif
1376
1377OBJS += $(DBUS_OBJS)
1378CFLAGS += $(DBUS_CFLAGS)
1379LIBS += $(DBUS_LIBS)
1380
1381ifdef CONFIG_READLINE
1382OBJS_c += ../src/utils/edit_readline.o
1383LIBS_c += -lncurses -lreadline
1384else
1385ifdef CONFIG_WPA_CLI_EDIT
1386OBJS_c += ../src/utils/edit.o
1387else
1388OBJS_c += ../src/utils/edit_simple.o
1389endif
1390endif
1391
1392ifdef CONFIG_NATIVE_WINDOWS
1393CFLAGS += -DCONFIG_NATIVE_WINDOWS
1394LIBS += -lws2_32 -lgdi32 -lcrypt32
1395LIBS_c += -lws2_32
1396LIBS_p += -lws2_32 -lgdi32
1397ifeq ($(CONFIG_CRYPTO), cryptoapi)
1398LIBS_p += -lcrypt32
1399endif
1400endif
1401
1402ifdef CONFIG_NO_STDOUT_DEBUG
1403CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1404ifndef CONFIG_CTRL_IFACE
1405CFLAGS += -DCONFIG_NO_WPA_MSG
1406endif
1407endif
1408
1409ifdef CONFIG_IPV6
1410# for eapol_test only
1411CFLAGS += -DCONFIG_IPV6
1412endif
1413
1414ifdef NEED_BASE64
1415OBJS += ../src/utils/base64.o
1416endif
1417
1418ifdef NEED_SME
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001419OBJS += sme.o
1420CFLAGS += -DCONFIG_SME
1421endif
1422
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001423OBJS += ../src/common/ieee802_11_common.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001424
1425ifdef NEED_EAP_COMMON
1426OBJS += ../src/eap_common/eap_common.o
1427endif
1428
1429ifndef CONFIG_MAIN
1430CONFIG_MAIN=main
1431endif
1432
1433ifdef CONFIG_DEBUG_SYSLOG
1434CFLAGS += -DCONFIG_DEBUG_SYSLOG
1435ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1436CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1437endif
1438endif
1439
Dmitry Shmidt04949592012-07-19 12:16:46 -07001440ifdef CONFIG_DEBUG_LINUX_TRACING
1441CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
1442endif
1443
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001444ifdef CONFIG_DEBUG_FILE
1445CFLAGS += -DCONFIG_DEBUG_FILE
1446endif
1447
1448ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1449CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1450endif
1451
1452ifdef CONFIG_FIPS
1453CFLAGS += -DCONFIG_FIPS
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001454ifneq ($(CONFIG_TLS), openssl)
1455$(error CONFIG_FIPS=y requires CONFIG_TLS=openssl)
1456endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001457endif
1458
1459OBJS += $(SHA1OBJS) $(DESOBJS)
1460
1461OBJS_p += $(SHA1OBJS)
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001462OBJS_p += $(SHA256OBJS)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001463
1464ifdef CONFIG_BGSCAN_SIMPLE
1465CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1466OBJS += bgscan_simple.o
1467NEED_BGSCAN=y
1468endif
1469
1470ifdef CONFIG_BGSCAN_LEARN
1471CFLAGS += -DCONFIG_BGSCAN_LEARN
1472OBJS += bgscan_learn.o
1473NEED_BGSCAN=y
1474endif
1475
1476ifdef NEED_BGSCAN
1477CFLAGS += -DCONFIG_BGSCAN
1478OBJS += bgscan.o
1479endif
1480
Dmitry Shmidt04949592012-07-19 12:16:46 -07001481ifdef CONFIG_AUTOSCAN_EXPONENTIAL
1482CFLAGS += -DCONFIG_AUTOSCAN_EXPONENTIAL
1483OBJS += autoscan_exponential.o
1484NEED_AUTOSCAN=y
1485endif
1486
1487ifdef CONFIG_AUTOSCAN_PERIODIC
1488CFLAGS += -DCONFIG_AUTOSCAN_PERIODIC
1489OBJS += autoscan_periodic.o
1490NEED_AUTOSCAN=y
1491endif
1492
1493ifdef NEED_AUTOSCAN
1494CFLAGS += -DCONFIG_AUTOSCAN
1495OBJS += autoscan.o
1496endif
1497
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001498ifdef CONFIG_EXT_PASSWORD_TEST
1499OBJS += ../src/utils/ext_password_test.o
1500CFLAGS += -DCONFIG_EXT_PASSWORD_TEST
1501NEED_EXT_PASSWORD=y
1502endif
1503
1504ifdef NEED_EXT_PASSWORD
1505OBJS += ../src/utils/ext_password.o
1506CFLAGS += -DCONFIG_EXT_PASSWORD
1507endif
1508
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001509ifdef NEED_GAS
1510OBJS += ../src/common/gas.o
1511OBJS += gas_query.o
1512CFLAGS += -DCONFIG_GAS
1513NEED_OFFCHANNEL=y
1514endif
1515
1516ifdef NEED_OFFCHANNEL
1517OBJS += offchannel.o
1518CFLAGS += -DCONFIG_OFFCHANNEL
1519endif
1520
Dmitry Shmidt71757432014-06-02 13:50:35 -07001521ifdef CONFIG_MODULE_TESTS
1522CFLAGS += -DCONFIG_MODULE_TESTS
1523OBJS += wpas_module_tests.o
1524OBJS += ../src/utils/utils_module_tests.o
1525OBJS += ../src/common/common_module_tests.o
1526ifdef CONFIG_WPS
1527OBJS += ../src/wps/wps_module_tests.o
1528endif
Dmitry Shmidt43cb5782014-06-16 16:23:22 -07001529ifndef CONFIG_P2P
1530OBJS += ../src/utils/bitfield.o
1531endif
Dmitry Shmidt71757432014-06-02 13:50:35 -07001532endif
1533
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001534OBJS += ../src/drivers/driver_common.o
Dmitry Shmidta54fa5f2013-01-15 13:53:35 -08001535OBJS_priv += ../src/drivers/driver_common.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001536
1537OBJS_wpa_rm := ctrl_iface.o ctrl_iface_unix.o
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001538OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.o
1539ifdef CONFIG_AUTHENTICATOR
1540OBJS_wpa += tests/link_test.o
1541endif
1542OBJS_wpa += $(OBJS_l2)
1543OBJS += wpa_supplicant.o events.o blacklist.o wpas_glue.o scan.o
1544OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.o
1545OBJS_t += ../src/radius/radius_client.o
1546OBJS_t += ../src/radius/radius.o
1547ifndef CONFIG_AP
1548OBJS_t += ../src/utils/ip_addr.o
1549endif
1550OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.o
Dmitry Shmidt04949592012-07-19 12:16:46 -07001551
1552OBJS_nfc := $(OBJS) $(OBJS_l2) nfc_pw_token.o
1553OBJS_nfc += $(OBJS_d) ../src/drivers/drivers.o
1554
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001555OBJS += $(CONFIG_MAIN).o
1556
1557ifdef CONFIG_PRIVSEP
1558OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o
1559OBJS_priv += $(OBJS_l2)
1560OBJS_priv += ../src/utils/os_$(CONFIG_OS).o
1561OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o
1562OBJS_priv += ../src/utils/common.o
1563OBJS_priv += ../src/utils/wpa_debug.o
1564OBJS_priv += ../src/utils/wpabuf.o
1565OBJS_priv += wpa_priv.o
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001566ifdef CONFIG_DRIVER_NL80211
1567OBJS_priv += ../src/common/ieee802_11_common.o
1568endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001569OBJS += ../src/l2_packet/l2_packet_privsep.o
1570OBJS += ../src/drivers/driver_privsep.o
1571EXTRA_progs += wpa_priv
1572else
1573OBJS += $(OBJS_d) ../src/drivers/drivers.o
1574OBJS += $(OBJS_l2)
1575endif
1576
1577ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1578CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1579OBJS += ../src/drivers/ndis_events.o
1580EXTRALIBS += -loleaut32 -lole32 -luuid
1581ifdef PLATFORMSDKLIB
1582EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1583else
1584EXTRALIBS += WbemUuid.Lib
1585endif
1586endif
1587
1588ifndef LDO
1589LDO=$(CC)
1590endif
1591
1592Q=@
1593E=echo
1594ifeq ($(V), 1)
1595Q=
1596E=true
1597endif
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001598ifeq ($(QUIET), 1)
1599Q=@
1600E=true
1601endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001602
1603dynamic_eap_methods: $(EAPDYN)
1604
1605../src/drivers/build.wpa_supplicant:
1606 @if [ -f ../src/drivers/build.hostapd ]; then \
1607 $(MAKE) -C ../src/drivers clean; \
1608 fi
1609 @touch ../src/drivers/build.wpa_supplicant
1610
1611BCHECK=../src/drivers/build.wpa_supplicant
1612
1613wpa_priv: $(BCHECK) $(OBJS_priv)
1614 $(Q)$(LDO) $(LDFLAGS) -o wpa_priv $(OBJS_priv) $(LIBS)
1615 @$(E) " LD " $@
1616
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001617$(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config
1618
1619wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001620 $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
1621 @$(E) " LD " $@
1622
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001623eapol_test: $(OBJS_t)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001624 $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
1625 @$(E) " LD " $@
1626
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001627preauth_test: $(OBJS_t2)
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001628 $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
1629 @$(E) " LD " $@
1630
1631wpa_passphrase: $(OBJS_p)
1632 $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p)
1633 @$(E) " LD " $@
1634
1635wpa_cli: $(OBJS_c)
1636 $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
1637 @$(E) " LD " $@
1638
1639link_test: $(OBJS) $(OBJS_h) tests/link_test.o
1640 $(Q)$(LDO) $(LDFLAGS) -o link_test $(OBJS) $(OBJS_h) tests/link_test.o $(LIBS)
1641 @$(E) " LD " $@
1642
1643test_wpa: $(OBJS_wpa) $(OBJS_h)
1644 $(Q)$(LDO) $(LDFLAGS) -o test_wpa $(OBJS_wpa) $(LIBS)
1645 @$(E) " LD " $@
1646
Dmitry Shmidt04949592012-07-19 12:16:46 -07001647nfc_pw_token: $(OBJS_nfc)
1648 $(Q)$(LDO) $(LDFLAGS) -o nfc_pw_token $(OBJS_nfc) $(LIBS)
1649 @$(E) " LD " $@
1650
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001651win_if_list: win_if_list.c
1652 $(Q)$(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w)
1653 @$(E) " LD " $@
1654
1655eap_psk.so: ../src/eap_peer/eap_psk.c ../src/eap_common/eap_psk_common.c
1656 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1657 -Deap_peer_psk_register=eap_peer_method_dynamic_init
1658
1659eap_pax.so: ../src/eap_peer/eap_pax.c ../src/eap_common/eap_pax_common.c
1660 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1661 -Deap_peer_pax_register=eap_peer_method_dynamic_init
1662
1663eap_sake.so: ../src/eap_peer/eap_sake.c ../src/eap_common/eap_sake_common.c
1664 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1665 -Deap_peer_sake_register=eap_peer_method_dynamic_init
1666
1667eap_wsc.so: ../src/eap_peer/eap_wsc.c ../src/eap_common/eap_wsc_common.c ../src/wps/wps.c
1668 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1669 -Deap_peer_wsc_register=eap_peer_method_dynamic_init
1670
1671eap_ikev2.so: ../src/eap_peer/eap_ikev2.c ../src/eap_peer/ikev2.c ../src/eap_common/eap_ikev2_common.o ../src/eap_common/ikev2_common.c
1672 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1673 -Deap_peer_ikev2_register=eap_peer_method_dynamic_init
1674
Dmitry Shmidt34af3062013-07-11 10:46:32 -07001675eap_eke.so: ../src/eap_peer/eap_eke.c ../src/eap_common/eap_eke_common.c
1676 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \
1677 -Deap_peer_eke_register=eap_peer_method_dynamic_init
1678
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001679%.so: %.c
1680 $(CC) $(LDFLAGS) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \
1681 -D$(*F:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init
1682
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001683ifdef CONFIG_CODE_COVERAGE
1684%.o: %.c
1685 @$(E) " CC " $<
1686 $(Q)cd $(dir $@); $(CC) -c -o $(notdir $@) $(CFLAGS) $(notdir $<)
1687else
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001688%.o: %.c
1689 $(Q)$(CC) -c -o $@ $(CFLAGS) $<
1690 @$(E) " CC " $<
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001691endif
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001692
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001693%.service: %.service.in
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001694 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
1695 @$(E) " sed" $<
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001696
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -08001697%@.service: %.service.arg.in
Dmitry Shmidt6c0da2b2015-01-05 13:08:17 -08001698 $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
1699 @$(E) " sed" $<
Dmitry Shmidtc5ec7f52012-03-06 16:33:24 -08001700
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001701wpa_supplicant.exe: wpa_supplicant
1702 mv -f $< $@
1703wpa_cli.exe: wpa_cli
1704 mv -f $< $@
1705wpa_passphrase.exe: wpa_passphrase
1706 mv -f $< $@
1707win_if_list.exe: win_if_list
1708 mv -f $< $@
1709eapol_test.exe: eapol_test
1710 mv -f $< $@
1711
1712WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe
1713
1714windows-bin: $(WINALL)
1715 $(STRIP) $(WINALL)
1716
Dmitry Shmidt1f69aa52012-01-24 16:10:04 -08001717wpa_gui:
1718 @echo "wpa_gui has been removed - see wpa_gui-qt4 for replacement"
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001719
1720wpa_gui-qt4/Makefile:
1721 qmake -o wpa_gui-qt4/Makefile wpa_gui-qt4/wpa_gui.pro
1722
1723wpa_gui-qt4/lang/wpa_gui_de.qm: wpa_gui-qt4/lang/wpa_gui_de.ts
1724 lrelease wpa_gui-qt4/wpa_gui.pro
1725
1726wpa_gui-qt4: wpa_gui-qt4/Makefile wpa_gui-qt4/lang/wpa_gui_de.qm
1727 $(MAKE) -C wpa_gui-qt4
1728
1729TEST_EAP_SIM_COMMON_OBJS = $(SHA1OBJS) $(MD5OBJS) \
1730 ../src/utils/common.o ../src/utils/os_unix.o \
1731 ../src/utils/wpa_debug.o $(AESOBJS) \
1732 tests/test_eap_sim_common.o
1733test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS)
1734 $(LDO) $(LDFLAGS) -o $@ $(TEST_EAP_SIM_COMMON_OBJS) $(LIBS)
1735 ./test-eap_sim_common
1736 rm test-eap_sim_common
1737
1738tests: test-eap_sim_common
1739
Dmitry Shmidt61d9df32012-08-29 16:22:06 -07001740FIPSDIR=/usr/local/ssl/fips-2.0
1741FIPSLD=$(FIPSDIR)/bin/fipsld
1742fips:
1743 $(MAKE) CC=$(FIPSLD) FIPSLD_CC="$(CC)"
1744
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001745lcov-html: wpa_supplicant.gcda
1746 lcov -c -d .. > lcov.info
1747 genhtml lcov.info --output-directory lcov-html
1748
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001749clean:
1750 $(MAKE) -C ../src clean
1751 $(MAKE) -C dbus clean
Dmitry Shmidt01904cf2013-12-05 11:08:35 -08001752 rm -f core *~ *.o *.d *.gcno *.gcda *.gcov
1753 rm -f eap_*.so $(ALL) $(WINALL) eapol_test preauth_test
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001754 rm -f wpa_priv
Dmitry Shmidt04949592012-07-19 12:16:46 -07001755 rm -f nfc_pw_token
Dmitry Shmidtfb79edc2014-01-10 10:45:54 -08001756 rm -f lcov.info
1757 rm -rf lcov-html
Dmitry Shmidt8d520ff2011-05-09 14:06:53 -07001758
1759-include $(OBJS:%.o=%.d)