Android.mk revision 1d43124e4581c52ccca203196d584a4c0772967f
1#
2# Copyright (C) 2008 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16#
17
18LOCAL_PATH := $(call my-dir)
19PKG_CONFIG ?= pkg-config
20
21WPA_BUILD_SUPPLICANT := false
22ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),)
23  WPA_BUILD_SUPPLICANT := true
24  CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := y
25endif
26
27ifeq ($(WPA_BUILD_SUPPLICANT),true)
28
29include $(LOCAL_PATH)/.config
30
31# To ignore possible wrong network configurations
32L_CFLAGS = -DWPA_IGNORE_CONFIG_ERRORS
33
34ifdef CONFIG_DRIVER_NL80211
35L_CFLAGS += -DANDROID_BRCM_P2P_PATCH
36endif
37
38# Use Android specific directory for control interface sockets
39L_CFLAGS += -DCONFIG_CTRL_IFACE_CLIENT_DIR=\"/data/misc/wifi/sockets\"
40L_CFLAGS += -DCONFIG_CTRL_IFACE_DIR=\"/data/system/wpa_supplicant\"
41
42# To force sizeof(enum) = 4
43ifeq ($(TARGET_ARCH),arm)
44L_CFLAGS += -mabi=aapcs-linux
45endif
46
47# To allow non-ASCII characters in SSID
48L_CFLAGS += -DWPA_UNICODE_SSID
49
50# OpenSSL is configured without engines on Android
51L_CFLAGS += -DOPENSSL_NO_ENGINE
52
53INCLUDES = $(LOCAL_PATH)
54INCLUDES += $(LOCAL_PATH)/src
55INCLUDES += $(LOCAL_PATH)/src/common
56# INCLUDES += $(LOCAL_PATH)/src/crypto # To force proper includes
57INCLUDES += $(LOCAL_PATH)/src/drivers
58INCLUDES += $(LOCAL_PATH)/src/eap_common
59INCLUDES += $(LOCAL_PATH)/src/eapol_supp
60INCLUDES += $(LOCAL_PATH)/src/eap_peer
61INCLUDES += $(LOCAL_PATH)/src/eap_server
62INCLUDES += $(LOCAL_PATH)/src/hlr_auc_gw
63INCLUDES += $(LOCAL_PATH)/src/l2_packet
64INCLUDES += $(LOCAL_PATH)/src/radius
65INCLUDES += $(LOCAL_PATH)/src/rsn_supp
66INCLUDES += $(LOCAL_PATH)/src/tls
67INCLUDES += $(LOCAL_PATH)/src/utils
68INCLUDES += $(LOCAL_PATH)/src/wps
69INCLUDES += external/openssl/include
70INCLUDES += frameworks/base/cmds/keystore
71ifdef CONFIG_DRIVER_NL80211
72INCLUDES += external/libnl-headers
73endif
74
75OBJS = config.c
76OBJS += notify.c
77OBJS += bss.c
78OBJS += eap_register.c
79OBJS += src/utils/common.c
80OBJS += src/utils/wpa_debug.c
81OBJS += src/utils/wpabuf.c
82OBJS_p = wpa_passphrase.c
83OBJS_p += src/utils/common.c
84OBJS_p += src/utils/wpa_debug.c
85OBJS_p += src/utils/wpabuf.c
86OBJS_c = wpa_cli.c src/common/wpa_ctrl.c
87OBJS_c += src/utils/wpa_debug.c
88OBJS_d =
89OBJS_priv =
90
91ifndef CONFIG_OS
92ifdef CONFIG_NATIVE_WINDOWS
93CONFIG_OS=win32
94else
95CONFIG_OS=unix
96endif
97endif
98
99ifeq ($(CONFIG_OS), internal)
100L_CFLAGS += -DOS_NO_C_LIB_DEFINES
101endif
102
103OBJS += src/utils/os_$(CONFIG_OS).c
104OBJS_p += src/utils/os_$(CONFIG_OS).c
105OBJS_c += src/utils/os_$(CONFIG_OS).c
106
107ifdef CONFIG_WPA_TRACE
108L_CFLAGS += -DWPA_TRACE
109OBJS += src/utils/trace.c
110OBJS_p += src/utils/trace.c
111OBJS_c += src/utils/trace.c
112LDFLAGS += -rdynamic
113L_CFLAGS += -funwind-tables
114ifdef CONFIG_WPA_TRACE_BFD
115L_CFLAGS += -DWPA_TRACE_BFD
116LIBS += -lbfd
117LIBS_p += -lbfd
118LIBS_c += -lbfd
119endif
120endif
121
122ifndef CONFIG_ELOOP
123CONFIG_ELOOP=eloop
124endif
125OBJS += src/utils/$(CONFIG_ELOOP).c
126OBJS_c += src/utils/$(CONFIG_ELOOP).c
127
128
129ifdef CONFIG_EAPOL_TEST
130L_CFLAGS += -Werror -DEAPOL_TEST
131endif
132
133ifndef CONFIG_BACKEND
134CONFIG_BACKEND=file
135endif
136
137ifeq ($(CONFIG_BACKEND), file)
138OBJS += config_file.c
139ifndef CONFIG_NO_CONFIG_BLOBS
140NEED_BASE64=y
141endif
142L_CFLAGS += -DCONFIG_BACKEND_FILE
143endif
144
145ifeq ($(CONFIG_BACKEND), winreg)
146OBJS += config_winreg.c
147endif
148
149ifeq ($(CONFIG_BACKEND), none)
150OBJS += config_none.c
151endif
152
153ifdef CONFIG_NO_CONFIG_WRITE
154L_CFLAGS += -DCONFIG_NO_CONFIG_WRITE
155endif
156
157ifdef CONFIG_NO_CONFIG_BLOBS
158L_CFLAGS += -DCONFIG_NO_CONFIG_BLOBS
159endif
160
161ifdef CONFIG_NO_SCAN_PROCESSING
162L_CFLAGS += -DCONFIG_NO_SCAN_PROCESSING
163endif
164
165ifdef CONFIG_IEEE80211W
166L_CFLAGS += -DCONFIG_IEEE80211W
167NEED_SHA256=y
168NEED_AES_OMAC1=y
169endif
170
171ifdef CONFIG_IEEE80211R
172L_CFLAGS += -DCONFIG_IEEE80211R
173OBJS += src/rsn_supp/wpa_ft.c
174NEED_80211_COMMON=y
175NEED_SHA256=y
176NEED_AES_OMAC1=y
177endif
178
179ifdef CONFIG_TDLS
180L_CFLAGS += -DCONFIG_TDLS
181OBJS += src/rsn_supp/tdls.o
182NEED_SHA256=y
183NEED_AES_OMAC1=y
184endif
185
186ifdef CONFIG_PEERKEY
187L_CFLAGS += -DCONFIG_PEERKEY
188endif
189
190ifndef CONFIG_NO_WPA
191OBJS += src/rsn_supp/wpa.c
192OBJS += src/rsn_supp/preauth.c
193OBJS += src/rsn_supp/pmksa_cache.c
194OBJS += src/rsn_supp/peerkey.c
195OBJS += src/rsn_supp/wpa_ie.c
196OBJS += src/common/wpa_common.c
197NEED_AES=y
198NEED_SHA1=y
199NEED_MD5=y
200NEED_RC4=y
201else
202L_CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2
203endif
204
205ifdef CONFIG_IBSS_RSN
206NEED_RSN_AUTHENTICATOR=y
207L_CFLAGS += -DCONFIG_IBSS_RSN
208OBJS += ibss_rsn.c
209endif
210
211ifdef CONFIG_P2P
212OBJS += p2p_supplicant.c
213OBJS += src/p2p/p2p.c
214OBJS += src/p2p/p2p_utils.c
215OBJS += src/p2p/p2p_parse.c
216OBJS += src/p2p/p2p_build.c
217OBJS += src/p2p/p2p_go_neg.c
218OBJS += src/p2p/p2p_sd.c
219OBJS += src/p2p/p2p_pd.c
220OBJS += src/p2p/p2p_invitation.c
221OBJS += src/p2p/p2p_dev_disc.c
222OBJS += src/p2p/p2p_group.c
223OBJS += src/ap/p2p_hostapd.c
224L_CFLAGS += -DCONFIG_P2P
225NEED_80211_COMMON=y
226ifdef CONFIG_P2P_STRICT
227L_CFLAGS += -DCONFIG_P2P_STRICT
228endif
229endif
230
231ifdef CONFIG_NO_WPA2
232L_CFLAGS += -DCONFIG_NO_WPA2
233endif
234
235include $(LOCAL_PATH)/src/drivers/drivers.mk
236
237ifdef CONFIG_AP
238OBJS_d += $(DRV_BOTH_OBJS)
239L_CFLAGS += $(DRV_BOTH_CFLAGS)
240LDFLAGS += $(DRV_BOTH_LDFLAGS)
241LIBS += $(DRV_BOTH_LIBS)
242else
243NEED_AP_MLME=
244OBJS_d += $(DRV_WPA_OBJS)
245L_CFLAGS += $(DRV_WPA_CFLAGS)
246LDFLAGS += $(DRV_WPA_LDFLAGS)
247LIBS += $(DRV_WPA_LIBS)
248endif
249
250ifndef CONFIG_L2_PACKET
251CONFIG_L2_PACKET=linux
252endif
253
254OBJS_l2 += src/l2_packet/l2_packet_$(CONFIG_L2_PACKET).c
255
256ifeq ($(CONFIG_L2_PACKET), pcap)
257ifdef CONFIG_WINPCAP
258L_CFLAGS += -DCONFIG_WINPCAP
259LIBS += -lwpcap -lpacket
260LIBS_w += -lwpcap
261else
262LIBS += -ldnet -lpcap
263endif
264endif
265
266ifeq ($(CONFIG_L2_PACKET), winpcap)
267LIBS += -lwpcap -lpacket
268LIBS_w += -lwpcap
269endif
270
271ifeq ($(CONFIG_L2_PACKET), freebsd)
272LIBS += -lpcap
273endif
274
275ifdef CONFIG_EAP_TLS
276# EAP-TLS
277ifeq ($(CONFIG_EAP_TLS), dyn)
278L_CFLAGS += -DEAP_TLS_DYNAMIC
279EAPDYN += src/eap_peer/eap_tls.so
280else
281L_CFLAGS += -DEAP_TLS
282OBJS += src/eap_peer/eap_tls.c
283OBJS_h += src/eap_server/eap_server_tls.c
284endif
285TLS_FUNCS=y
286CONFIG_IEEE8021X_EAPOL=y
287endif
288
289ifdef CONFIG_EAP_PEAP
290# EAP-PEAP
291ifeq ($(CONFIG_EAP_PEAP), dyn)
292L_CFLAGS += -DEAP_PEAP_DYNAMIC
293EAPDYN += src/eap_peer/eap_peap.so
294else
295L_CFLAGS += -DEAP_PEAP
296OBJS += src/eap_peer/eap_peap.c
297OBJS += src/eap_common/eap_peap_common.c
298OBJS_h += src/eap_server/eap_server_peap.c
299endif
300TLS_FUNCS=y
301CONFIG_IEEE8021X_EAPOL=y
302endif
303
304ifdef CONFIG_EAP_TTLS
305# EAP-TTLS
306ifeq ($(CONFIG_EAP_TTLS), dyn)
307L_CFLAGS += -DEAP_TTLS_DYNAMIC
308EAPDYN += src/eap_peer/eap_ttls.so
309else
310L_CFLAGS += -DEAP_TTLS
311OBJS += src/eap_peer/eap_ttls.c
312OBJS_h += src/eap_server/eap_server_ttls.c
313endif
314MS_FUNCS=y
315TLS_FUNCS=y
316CHAP=y
317CONFIG_IEEE8021X_EAPOL=y
318endif
319
320ifdef CONFIG_EAP_MD5
321# EAP-MD5
322ifeq ($(CONFIG_EAP_MD5), dyn)
323L_CFLAGS += -DEAP_MD5_DYNAMIC
324EAPDYN += src/eap_peer/eap_md5.so
325else
326L_CFLAGS += -DEAP_MD5
327OBJS += src/eap_peer/eap_md5.c
328OBJS_h += src/eap_server/eap_server_md5.c
329endif
330CHAP=y
331CONFIG_IEEE8021X_EAPOL=y
332endif
333
334# backwards compatibility for old spelling
335ifdef CONFIG_MSCHAPV2
336ifndef CONFIG_EAP_MSCHAPV2
337CONFIG_EAP_MSCHAPV2=y
338endif
339endif
340
341ifdef CONFIG_EAP_MSCHAPV2
342# EAP-MSCHAPv2
343ifeq ($(CONFIG_EAP_MSCHAPV2), dyn)
344L_CFLAGS += -DEAP_MSCHAPv2_DYNAMIC
345EAPDYN += src/eap_peer/eap_mschapv2.so
346EAPDYN += src/eap_peer/mschapv2.so
347else
348L_CFLAGS += -DEAP_MSCHAPv2
349OBJS += src/eap_peer/eap_mschapv2.c
350OBJS += src/eap_peer/mschapv2.c
351OBJS_h += src/eap_server/eap_server_mschapv2.c
352endif
353MS_FUNCS=y
354CONFIG_IEEE8021X_EAPOL=y
355endif
356
357ifdef CONFIG_EAP_GTC
358# EAP-GTC
359ifeq ($(CONFIG_EAP_GTC), dyn)
360L_CFLAGS += -DEAP_GTC_DYNAMIC
361EAPDYN += src/eap_peer/eap_gtc.so
362else
363L_CFLAGS += -DEAP_GTC
364OBJS += src/eap_peer/eap_gtc.c
365OBJS_h += src/eap_server/eap_server_gtc.c
366endif
367CONFIG_IEEE8021X_EAPOL=y
368endif
369
370ifdef CONFIG_EAP_OTP
371# EAP-OTP
372ifeq ($(CONFIG_EAP_OTP), dyn)
373L_CFLAGS += -DEAP_OTP_DYNAMIC
374EAPDYN += src/eap_peer/eap_otp.so
375else
376L_CFLAGS += -DEAP_OTP
377OBJS += src/eap_peer/eap_otp.c
378endif
379CONFIG_IEEE8021X_EAPOL=y
380endif
381
382ifdef CONFIG_EAP_SIM
383# EAP-SIM
384ifeq ($(CONFIG_EAP_SIM), dyn)
385L_CFLAGS += -DEAP_SIM_DYNAMIC
386EAPDYN += src/eap_peer/eap_sim.so
387else
388L_CFLAGS += -DEAP_SIM
389OBJS += src/eap_peer/eap_sim.c
390OBJS_h += src/eap_server/eap_server_sim.c
391endif
392CONFIG_IEEE8021X_EAPOL=y
393CONFIG_EAP_SIM_COMMON=y
394NEED_AES_CBC=y
395endif
396
397ifdef CONFIG_EAP_LEAP
398# EAP-LEAP
399ifeq ($(CONFIG_EAP_LEAP), dyn)
400L_CFLAGS += -DEAP_LEAP_DYNAMIC
401EAPDYN += src/eap_peer/eap_leap.so
402else
403L_CFLAGS += -DEAP_LEAP
404OBJS += src/eap_peer/eap_leap.c
405endif
406MS_FUNCS=y
407CONFIG_IEEE8021X_EAPOL=y
408endif
409
410ifdef CONFIG_EAP_PSK
411# EAP-PSK
412ifeq ($(CONFIG_EAP_PSK), dyn)
413L_CFLAGS += -DEAP_PSK_DYNAMIC
414EAPDYN += src/eap_peer/eap_psk.so
415else
416L_CFLAGS += -DEAP_PSK
417OBJS += src/eap_peer/eap_psk.c src/eap_common/eap_psk_common.c
418OBJS_h += src/eap_server/eap_server_psk.c
419endif
420CONFIG_IEEE8021X_EAPOL=y
421NEED_AES=y
422NEED_AES_OMAC1=y
423NEED_AES_ENCBLOCK=y
424NEED_AES_EAX=y
425endif
426
427ifdef CONFIG_EAP_AKA
428# EAP-AKA
429ifeq ($(CONFIG_EAP_AKA), dyn)
430L_CFLAGS += -DEAP_AKA_DYNAMIC
431EAPDYN += src/eap_peer/eap_aka.so
432else
433L_CFLAGS += -DEAP_AKA
434OBJS += src/eap_peer/eap_aka.c
435OBJS_h += src/eap_server/eap_server_aka.c
436endif
437CONFIG_IEEE8021X_EAPOL=y
438CONFIG_EAP_SIM_COMMON=y
439NEED_AES_CBC=y
440endif
441
442ifdef CONFIG_EAP_AKA_PRIME
443# EAP-AKA'
444ifeq ($(CONFIG_EAP_AKA_PRIME), dyn)
445L_CFLAGS += -DEAP_AKA_PRIME_DYNAMIC
446else
447L_CFLAGS += -DEAP_AKA_PRIME
448endif
449NEED_SHA256=y
450endif
451
452ifdef CONFIG_EAP_SIM_COMMON
453OBJS += src/eap_common/eap_sim_common.c
454OBJS_h += src/eap_server/eap_sim_db.c
455NEED_AES=y
456NEED_FIPS186_2_PRF=y
457endif
458
459ifdef CONFIG_EAP_FAST
460# EAP-FAST
461ifeq ($(CONFIG_EAP_FAST), dyn)
462L_CFLAGS += -DEAP_FAST_DYNAMIC
463EAPDYN += src/eap_peer/eap_fast.so
464EAPDYN += src/eap_common/eap_fast_common.c
465else
466L_CFLAGS += -DEAP_FAST
467OBJS += src/eap_peer/eap_fast.c src/eap_peer/eap_fast_pac.c
468OBJS += src/eap_common/eap_fast_common.c
469OBJS_h += src/eap_server/eap_server_fast.c
470endif
471TLS_FUNCS=y
472CONFIG_IEEE8021X_EAPOL=y
473NEED_T_PRF=y
474endif
475
476ifdef CONFIG_EAP_PAX
477# EAP-PAX
478ifeq ($(CONFIG_EAP_PAX), dyn)
479L_CFLAGS += -DEAP_PAX_DYNAMIC
480EAPDYN += src/eap_peer/eap_pax.so
481else
482L_CFLAGS += -DEAP_PAX
483OBJS += src/eap_peer/eap_pax.c src/eap_common/eap_pax_common.c
484OBJS_h += src/eap_server/eap_server_pax.c
485endif
486CONFIG_IEEE8021X_EAPOL=y
487endif
488
489ifdef CONFIG_EAP_SAKE
490# EAP-SAKE
491ifeq ($(CONFIG_EAP_SAKE), dyn)
492L_CFLAGS += -DEAP_SAKE_DYNAMIC
493EAPDYN += src/eap_peer/eap_sake.so
494else
495L_CFLAGS += -DEAP_SAKE
496OBJS += src/eap_peer/eap_sake.c src/eap_common/eap_sake_common.c
497OBJS_h += src/eap_server/eap_server_sake.c
498endif
499CONFIG_IEEE8021X_EAPOL=y
500endif
501
502ifdef CONFIG_EAP_GPSK
503# EAP-GPSK
504ifeq ($(CONFIG_EAP_GPSK), dyn)
505L_CFLAGS += -DEAP_GPSK_DYNAMIC
506EAPDYN += src/eap_peer/eap_gpsk.so
507else
508L_CFLAGS += -DEAP_GPSK
509OBJS += src/eap_peer/eap_gpsk.c src/eap_common/eap_gpsk_common.c
510OBJS_h += src/eap_server/eap_server_gpsk.c
511endif
512CONFIG_IEEE8021X_EAPOL=y
513ifdef CONFIG_EAP_GPSK_SHA256
514L_CFLAGS += -DEAP_GPSK_SHA256
515endif
516NEED_SHA256=y
517NEED_AES_OMAC1=y
518endif
519
520ifdef CONFIG_EAP_PWD
521L_CFLAGS += -DEAP_PWD
522OBJS += src/eap_peer/eap_pwd.c src/eap_common/eap_pwd_common.c
523OBJS_h += src/eap_server/eap_pwd.c
524CONFIG_IEEE8021X_EAPOL=y
525NEED_SHA256=y
526endif
527
528ifdef CONFIG_WPS
529ifdef CONFIG_WPS2
530L_CFLAGS += -DCONFIG_WPS2
531endif
532
533# EAP-WSC
534L_CFLAGS += -DCONFIG_WPS -DEAP_WSC
535OBJS += wps_supplicant.c
536OBJS += src/utils/uuid.c
537OBJS += src/eap_peer/eap_wsc.c src/eap_common/eap_wsc_common.c
538OBJS += src/wps/wps.c
539OBJS += src/wps/wps_common.c
540OBJS += src/wps/wps_attr_parse.c
541OBJS += src/wps/wps_attr_build.c
542OBJS += src/wps/wps_attr_process.c
543OBJS += src/wps/wps_dev_attr.c
544OBJS += src/wps/wps_enrollee.c
545OBJS += src/wps/wps_registrar.c
546OBJS_h += src/eap_server/eap_server_wsc.c
547CONFIG_IEEE8021X_EAPOL=y
548NEED_DH_GROUPS=y
549NEED_SHA256=y
550NEED_BASE64=y
551NEED_80211_COMMON=y
552NEED_AES_CBC=y
553NEED_MODEXP=y
554
555ifdef CONFIG_WPS_UFD
556L_CFLAGS += -DCONFIG_WPS_UFD
557OBJS += src/wps/wps_ufd.c
558NEED_WPS_OOB=y
559endif
560
561ifdef CONFIG_WPS_NFC
562L_CFLAGS += -DCONFIG_WPS_NFC
563OBJS += src/wps/ndef.c
564OBJS += src/wps/wps_nfc.c
565NEED_WPS_OOB=y
566ifdef CONFIG_WPS_NFC_PN531
567PN531_PATH ?= /usr/local/src/nfc
568L_CFLAGS += -DCONFIG_WPS_NFC_PN531
569L_CFLAGS += -I${PN531_PATH}/inc
570OBJS += src/wps/wps_nfc_pn531.c
571LIBS += ${PN531_PATH}/lib/wpsnfc.dll
572LIBS += ${PN531_PATH}/lib/libnfc_mapping_pn53x.dll
573endif
574endif
575
576ifdef NEED_WPS_OOB
577L_CFLAGS += -DCONFIG_WPS_OOB
578endif
579
580ifdef CONFIG_WPS_ER
581CONFIG_WPS_UPNP=y
582L_CFLAGS += -DCONFIG_WPS_ER
583OBJS += src/wps/wps_er.c
584OBJS += src/wps/wps_er_ssdp.c
585endif
586
587ifdef CONFIG_WPS_UPNP
588L_CFLAGS += -DCONFIG_WPS_UPNP
589OBJS += src/wps/wps_upnp.c
590OBJS += src/wps/wps_upnp_ssdp.c
591OBJS += src/wps/wps_upnp_web.c
592OBJS += src/wps/wps_upnp_event.c
593OBJS += src/wps/wps_upnp_ap.c
594OBJS += src/wps/upnp_xml.c
595OBJS += src/wps/httpread.c
596OBJS += src/wps/http_client.c
597OBJS += src/wps/http_server.c
598endif
599
600ifdef CONFIG_WPS_STRICT
601L_CFLAGS += -DCONFIG_WPS_STRICT
602OBJS += src/wps/wps_validate.c
603endif
604
605ifdef CONFIG_WPS_TESTING
606L_CFLAGS += -DCONFIG_WPS_TESTING
607endif
608
609ifdef CONFIG_WPS_REG_DISABLE_OPEN
610L_CFLAGS += -DCONFIG_WPS_REG_DISABLE_OPEN
611endif
612
613endif
614
615ifdef CONFIG_EAP_IKEV2
616# EAP-IKEv2
617ifeq ($(CONFIG_EAP_IKEV2), dyn)
618L_CFLAGS += -DEAP_IKEV2_DYNAMIC
619EAPDYN += src/eap_peer/eap_ikev2.so src/eap_peer/ikev2.c
620EAPDYN += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
621else
622L_CFLAGS += -DEAP_IKEV2
623OBJS += src/eap_peer/eap_ikev2.c src/eap_peer/ikev2.c
624OBJS += src/eap_common/eap_ikev2_common.c src/eap_common/ikev2_common.c
625OBJS_h += src/eap_server/eap_server_ikev2.c
626OBJS_h += src/eap_server/ikev2.c
627endif
628CONFIG_IEEE8021X_EAPOL=y
629NEED_DH_GROUPS=y
630NEED_DH_GROUPS_ALL=y
631NEED_MODEXP=y
632NEED_CIPHER=y
633endif
634
635ifdef CONFIG_EAP_VENDOR_TEST
636ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn)
637L_CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC
638EAPDYN += src/eap_peer/eap_vendor_test.so
639else
640L_CFLAGS += -DEAP_VENDOR_TEST
641OBJS += src/eap_peer/eap_vendor_test.c
642OBJS_h += src/eap_server/eap_server_vendor_test.c
643endif
644CONFIG_IEEE8021X_EAPOL=y
645endif
646
647ifdef CONFIG_EAP_TNC
648# EAP-TNC
649L_CFLAGS += -DEAP_TNC
650OBJS += src/eap_peer/eap_tnc.c
651OBJS += src/eap_peer/tncc.c
652OBJS_h += src/eap_server/eap_server_tnc.c
653OBJS_h += src/eap_server/tncs.c
654NEED_BASE64=y
655ifndef CONFIG_NATIVE_WINDOWS
656ifndef CONFIG_DRIVER_BSD
657LIBS += -ldl
658endif
659endif
660endif
661
662ifdef CONFIG_IEEE8021X_EAPOL
663# IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication)
664L_CFLAGS += -DIEEE8021X_EAPOL
665OBJS += src/eapol_supp/eapol_supp_sm.c
666OBJS += src/eap_peer/eap.c src/eap_peer/eap_methods.c
667NEED_EAP_COMMON=y
668ifdef CONFIG_DYNAMIC_EAP_METHODS
669L_CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
670LIBS += -ldl -rdynamic
671endif
672endif
673
674ifdef CONFIG_AP
675NEED_80211_COMMON=y
676NEED_EAP_COMMON=y
677NEED_RSN_AUTHENTICATOR=y
678L_CFLAGS += -DCONFIG_AP
679OBJS += ap.c
680L_CFLAGS += -DCONFIG_NO_RADIUS
681L_CFLAGS += -DCONFIG_NO_ACCOUNTING
682L_CFLAGS += -DCONFIG_NO_VLAN
683OBJS += src/ap/hostapd.c
684OBJS += src/ap/wpa_auth_glue.c
685OBJS += src/ap/utils.c
686OBJS += src/ap/authsrv.c
687OBJS += src/ap/ap_config.c
688OBJS += src/utils/ip_addr.c
689OBJS += src/ap/sta_info.c
690OBJS += src/ap/tkip_countermeasures.c
691OBJS += src/ap/ap_mlme.c
692OBJS += src/ap/ieee802_1x.c
693OBJS += src/eapol_auth/eapol_auth_sm.c
694OBJS += src/ap/ieee802_11_auth.c
695OBJS += src/ap/drv_callbacks.c
696OBJS += src/ap/ap_drv_ops.c
697ifdef CONFIG_IEEE80211N
698OBJS += src/ap/ieee802_11_ht.c
699endif
700ifdef CONFIG_CTRL_IFACE
701OBJS += src/ap/ctrl_iface_ap.c
702endif
703
704L_CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
705OBJS += src/eap_server/eap_server.c
706OBJS += src/eap_server/eap_server_identity.c
707OBJS += src/eap_server/eap_server_methods.c
708
709ifdef CONFIG_IEEE80211N
710L_CFLAGS += -DCONFIG_IEEE80211N
711endif
712
713ifdef NEED_AP_MLME
714OBJS += src/ap/beacon.c
715OBJS += src/ap/wmm.c
716OBJS += src/ap/ap_list.c
717OBJS += src/ap/ieee802_11.c
718OBJS += src/ap/hw_features.c
719L_CFLAGS += -DNEED_AP_MLME
720endif
721ifdef CONFIG_WPS
722L_CFLAGS += -DEAP_SERVER_WSC
723OBJS += src/ap/wps_hostapd.c
724OBJS += src/eap_server/eap_server_wsc.c
725endif
726endif
727
728ifdef NEED_RSN_AUTHENTICATOR
729L_CFLAGS += -DCONFIG_NO_RADIUS
730NEED_AES_WRAP=y
731OBJS += src/ap/wpa_auth.c
732OBJS += src/ap/wpa_auth_ie.c
733OBJS += src/ap/pmksa_cache_auth.c
734ifdef CONFIG_IEEE80211R
735OBJS += src/ap/wpa_auth_ft.c
736endif
737ifdef CONFIG_PEERKEY
738OBJS += src/ap/peerkey_auth.c
739endif
740endif
741
742ifdef CONFIG_EAP_SERVER
743L_CFLAGS += -DEAP_SERVER
744OBJS_h += src/eap_server/eap_server.c
745OBJS_h += src/eap_server/eap_server_identity.c
746OBJS_h += src/eap_server/eap_server_methods.c
747endif
748
749ifdef CONFIG_RADIUS_CLIENT
750OBJS_h += src/utils/ip_addr.c
751OBJS_h += src/radius/radius.c
752OBJS_h += src/radius/radius_client.c
753endif
754
755ifdef CONFIG_AUTHENTICATOR
756OBJS_h += src/eapol_auth/eapol_auth_sm.c
757OBJS_h += src/ap/ieee802_1x.c
758endif
759
760ifdef CONFIG_WPA_AUTHENTICATOR
761OBJS_h += src/ap/wpa_auth.c
762OBJS_h += src/ap/wpa_auth_ie.c
763OBJS_h += src/ap/pmksa_cache_auth.c
764ifdef CONFIG_IEEE80211R
765OBJS_h += src/ap/wpa_auth_ft.c
766endif
767ifdef CONFIG_PEERKEY
768OBJS_h += src/ap/peerkey_auth.c
769endif
770endif
771
772ifdef CONFIG_PCSC
773# PC/SC interface for smartcards (USIM, GSM SIM)
774L_CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC
775OBJS += src/utils/pcsc_funcs.c
776# -lpthread may not be needed depending on how pcsc-lite was configured
777ifdef CONFIG_NATIVE_WINDOWS
778#Once MinGW gets support for WinScard, -lwinscard could be used instead of the
779#dynamic symbol loading that is now used in pcsc_funcs.c
780#LIBS += -lwinscard
781else
782LIBS += -lpcsclite -lpthread
783endif
784endif
785
786ifdef CONFIG_SIM_SIMULATOR
787L_CFLAGS += -DCONFIG_SIM_SIMULATOR
788NEED_MILENAGE=y
789endif
790
791ifdef CONFIG_USIM_SIMULATOR
792L_CFLAGS += -DCONFIG_USIM_SIMULATOR
793NEED_MILENAGE=y
794endif
795
796ifdef NEED_MILENAGE
797OBJS += src/crypto/milenage.c
798endif
799
800ifdef CONFIG_PKCS12
801L_CFLAGS += -DPKCS12_FUNCS
802endif
803
804ifdef CONFIG_SMARTCARD
805L_CFLAGS += -DCONFIG_SMARTCARD
806endif
807
808ifdef MS_FUNCS
809OBJS += src/crypto/ms_funcs.c
810NEED_DES=y
811NEED_MD4=y
812endif
813
814ifdef CHAP
815OBJS += src/eap_common/chap.c
816endif
817
818ifdef TLS_FUNCS
819NEED_DES=y
820# Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST)
821OBJS += src/eap_peer/eap_tls_common.c
822OBJS_h += src/eap_server/eap_server_tls_common.c
823NEED_TLS_PRF=y
824endif
825
826ifndef CONFIG_TLS
827CONFIG_TLS=openssl
828endif
829
830ifeq ($(CONFIG_TLS), openssl)
831ifdef TLS_FUNCS
832L_CFLAGS += -DEAP_TLS_OPENSSL
833OBJS += src/crypto/tls_openssl.c
834LIBS += -lssl
835endif
836OBJS += src/crypto/crypto_openssl.c
837OBJS_p += src/crypto/crypto_openssl.c
838ifdef NEED_FIPS186_2_PRF
839OBJS += src/crypto/fips_prf_openssl.c
840endif
841LIBS += -lcrypto
842LIBS_p += -lcrypto
843endif
844
845ifeq ($(CONFIG_TLS), gnutls)
846ifdef TLS_FUNCS
847OBJS += src/crypto/tls_gnutls.c
848LIBS += -lgnutls -lgpg-error
849ifdef CONFIG_GNUTLS_EXTRA
850L_CFLAGS += -DCONFIG_GNUTLS_EXTRA
851LIBS += -lgnutls-extra
852endif
853endif
854OBJS += src/crypto/crypto_gnutls.c
855OBJS_p += src/crypto/crypto_gnutls.c
856ifdef NEED_FIPS186_2_PRF
857OBJS += src/crypto/fips_prf_gnutls.c
858endif
859LIBS += -lgcrypt
860LIBS_p += -lgcrypt
861CONFIG_INTERNAL_SHA256=y
862CONFIG_INTERNAL_RC4=y
863CONFIG_INTERNAL_DH_GROUP5=y
864endif
865
866ifeq ($(CONFIG_TLS), schannel)
867ifdef TLS_FUNCS
868OBJS += src/crypto/tls_schannel.c
869endif
870OBJS += src/crypto/crypto_cryptoapi.c
871OBJS_p += src/crypto/crypto_cryptoapi.c
872ifdef NEED_FIPS186_2_PRF
873OBJS += src/crypto/fips_prf_cryptoapi.c
874endif
875CONFIG_INTERNAL_SHA256=y
876CONFIG_INTERNAL_RC4=y
877CONFIG_INTERNAL_DH_GROUP5=y
878endif
879
880ifeq ($(CONFIG_TLS), nss)
881ifdef TLS_FUNCS
882OBJS += src/crypto/tls_nss.c
883LIBS += -lssl3
884endif
885OBJS += src/crypto/crypto_nss.c
886OBJS_p += src/crypto/crypto_nss.c
887ifdef NEED_FIPS186_2_PRF
888OBJS += src/crypto/fips_prf_nss.c
889endif
890LIBS += -lnss3
891LIBS_p += -lnss3
892CONFIG_INTERNAL_MD4=y
893CONFIG_INTERNAL_DH_GROUP5=y
894endif
895
896ifeq ($(CONFIG_TLS), internal)
897ifndef CONFIG_CRYPTO
898CONFIG_CRYPTO=internal
899endif
900ifdef TLS_FUNCS
901OBJS += src/crypto/crypto_internal-rsa.c
902OBJS += src/crypto/tls_internal.c
903OBJS += src/tls/tlsv1_common.c
904OBJS += src/tls/tlsv1_record.c
905OBJS += src/tls/tlsv1_cred.c
906OBJS += src/tls/tlsv1_client.c
907OBJS += src/tls/tlsv1_client_write.c
908OBJS += src/tls/tlsv1_client_read.c
909OBJS += src/tls/asn1.c
910OBJS += src/tls/rsa.c
911OBJS += src/tls/x509v3.c
912OBJS += src/tls/pkcs1.c
913OBJS += src/tls/pkcs5.c
914OBJS += src/tls/pkcs8.c
915NEED_SHA256=y
916NEED_BASE64=y
917NEED_TLS_PRF=y
918NEED_MODEXP=y
919NEED_CIPHER=y
920L_CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
921endif
922ifdef NEED_CIPHER
923NEED_DES=y
924OBJS += src/crypto/crypto_internal-cipher.c
925endif
926ifdef NEED_MODEXP
927OBJS += src/crypto/crypto_internal-modexp.c
928OBJS += src/tls/bignum.c
929endif
930ifeq ($(CONFIG_CRYPTO), libtomcrypt)
931OBJS += src/crypto/crypto_libtomcrypt.c
932OBJS_p += src/crypto/crypto_libtomcrypt.c
933LIBS += -ltomcrypt -ltfm
934LIBS_p += -ltomcrypt -ltfm
935CONFIG_INTERNAL_SHA256=y
936CONFIG_INTERNAL_RC4=y
937CONFIG_INTERNAL_DH_GROUP5=y
938endif
939ifeq ($(CONFIG_CRYPTO), internal)
940OBJS += src/crypto/crypto_internal.c
941OBJS_p += src/crypto/crypto_internal.c
942NEED_AES_ENC=y
943L_CFLAGS += -DCONFIG_CRYPTO_INTERNAL
944ifdef CONFIG_INTERNAL_LIBTOMMATH
945L_CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
946ifdef CONFIG_INTERNAL_LIBTOMMATH_FAST
947L_CFLAGS += -DLTM_FAST
948endif
949else
950LIBS += -ltommath
951LIBS_p += -ltommath
952endif
953CONFIG_INTERNAL_AES=y
954CONFIG_INTERNAL_DES=y
955CONFIG_INTERNAL_SHA1=y
956CONFIG_INTERNAL_MD4=y
957CONFIG_INTERNAL_MD5=y
958CONFIG_INTERNAL_SHA256=y
959CONFIG_INTERNAL_RC4=y
960CONFIG_INTERNAL_DH_GROUP5=y
961endif
962ifeq ($(CONFIG_CRYPTO), cryptoapi)
963OBJS += src/crypto/crypto_cryptoapi.c
964OBJS_p += src/crypto/crypto_cryptoapi.c
965L_CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI
966CONFIG_INTERNAL_SHA256=y
967CONFIG_INTERNAL_RC4=y
968endif
969endif
970
971ifeq ($(CONFIG_TLS), none)
972ifdef TLS_FUNCS
973OBJS += src/crypto/tls_none.c
974L_CFLAGS += -DEAP_TLS_NONE
975CONFIG_INTERNAL_AES=y
976CONFIG_INTERNAL_SHA1=y
977CONFIG_INTERNAL_MD5=y
978endif
979OBJS += src/crypto/crypto_none.c
980OBJS_p += src/crypto/crypto_none.c
981CONFIG_INTERNAL_SHA256=y
982CONFIG_INTERNAL_RC4=y
983endif
984
985ifdef TLS_FUNCS
986ifdef CONFIG_SMARTCARD
987ifndef CONFIG_NATIVE_WINDOWS
988ifneq ($(CONFIG_L2_PACKET), freebsd)
989LIBS += -ldl
990endif
991endif
992endif
993endif
994
995ifndef TLS_FUNCS
996OBJS += src/crypto/tls_none.c
997ifeq ($(CONFIG_TLS), internal)
998CONFIG_INTERNAL_AES=y
999CONFIG_INTERNAL_SHA1=y
1000CONFIG_INTERNAL_MD5=y
1001CONFIG_INTERNAL_RC4=y
1002endif
1003endif
1004
1005AESOBJS = # none so far (see below)
1006ifdef CONFIG_INTERNAL_AES
1007AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-dec.c
1008endif
1009
1010AESOBJS += src/crypto/aes-unwrap.c
1011ifdef NEED_AES_EAX
1012AESOBJS += src/crypto/aes-eax.c
1013NEED_AES_CTR=y
1014endif
1015ifdef NEED_AES_CTR
1016AESOBJS += src/crypto/aes-ctr.c
1017endif
1018ifdef NEED_AES_ENCBLOCK
1019AESOBJS += src/crypto/aes-encblock.c
1020endif
1021ifdef NEED_AES_OMAC1
1022NEED_AES_ENC=y
1023AESOBJS += src/crypto/aes-omac1.c
1024endif
1025ifdef NEED_AES_WRAP
1026NEED_AES_ENC=y
1027AESOBJS += src/crypto/aes-wrap.c
1028endif
1029ifdef NEED_AES_CBC
1030NEED_AES_ENC=y
1031AESOBJS += src/crypto/aes-cbc.c
1032endif
1033ifdef NEED_AES_ENC
1034ifdef CONFIG_INTERNAL_AES
1035AESOBJS += src/crypto/aes-internal-enc.c
1036endif
1037endif
1038ifdef NEED_AES
1039OBJS += $(AESOBJS)
1040endif
1041
1042SHA1OBJS =
1043ifdef NEED_SHA1
1044SHA1OBJS += src/crypto/sha1.c
1045ifdef CONFIG_INTERNAL_SHA1
1046SHA1OBJS += src/crypto/sha1-internal.c
1047ifdef NEED_FIPS186_2_PRF
1048SHA1OBJS += src/crypto/fips_prf_internal.c
1049endif
1050endif
1051ifdef CONFIG_NO_WPA_PASSPHRASE
1052L_CFLAGS += -DCONFIG_NO_PBKDF2
1053else
1054SHA1OBJS += src/crypto/sha1-pbkdf2.c
1055endif
1056ifdef NEED_T_PRF
1057SHA1OBJS += src/crypto/sha1-tprf.c
1058endif
1059ifdef NEED_TLS_PRF
1060SHA1OBJS += src/crypto/sha1-tlsprf.c
1061endif
1062endif
1063
1064MD5OBJS = src/crypto/md5.c
1065ifdef NEED_MD5
1066ifdef CONFIG_INTERNAL_MD5
1067MD5OBJS += src/crypto/md5-internal.c
1068endif
1069ifdef CONFIG_FIPS
1070MD5OBJS += src/crypto/md5-non-fips.c
1071endif
1072OBJS += $(MD5OBJS)
1073OBJS_p += $(MD5OBJS)
1074endif
1075
1076ifdef NEED_MD4
1077ifdef CONFIG_INTERNAL_MD4
1078OBJS += src/crypto/md4-internal.c
1079endif
1080endif
1081
1082DESOBJS = # none needed when not internal
1083ifdef NEED_DES
1084ifdef CONFIG_INTERNAL_DES
1085DESOBJS += src/crypto/des-internal.c
1086endif
1087endif
1088
1089ifdef NEED_RC4
1090ifdef CONFIG_INTERNAL_RC4
1091OBJS += src/crypto/rc4.c
1092endif
1093endif
1094
1095SHA256OBJS = # none by default
1096ifdef NEED_SHA256
1097L_CFLAGS += -DCONFIG_SHA256
1098SHA256OBJS += src/crypto/sha256.c
1099ifdef CONFIG_INTERNAL_SHA256
1100SHA256OBJS += src/crypto/sha256-internal.c
1101endif
1102OBJS += $(SHA256OBJS)
1103endif
1104
1105ifdef NEED_DH_GROUPS
1106OBJS += src/crypto/dh_groups.c
1107endif
1108ifdef NEED_DH_GROUPS_ALL
1109L_CFLAGS += -DALL_DH_GROUPS
1110endif
1111ifdef CONFIG_INTERNAL_DH_GROUP5
1112ifdef NEED_DH_GROUPS
1113OBJS += src/crypto/dh_group5.c
1114endif
1115endif
1116
1117ifdef CONFIG_NO_RANDOM_POOL
1118L_CFLAGS += -DCONFIG_NO_RANDOM_POOL
1119else
1120OBJS += src/crypto/random.c
1121endif
1122
1123ifdef CONFIG_CTRL_IFACE
1124ifeq ($(CONFIG_CTRL_IFACE), y)
1125ifdef CONFIG_NATIVE_WINDOWS
1126CONFIG_CTRL_IFACE=named_pipe
1127else
1128CONFIG_CTRL_IFACE=unix
1129endif
1130endif
1131L_CFLAGS += -DCONFIG_CTRL_IFACE
1132ifeq ($(CONFIG_CTRL_IFACE), unix)
1133L_CFLAGS += -DCONFIG_CTRL_IFACE_UNIX
1134endif
1135ifeq ($(CONFIG_CTRL_IFACE), udp)
1136L_CFLAGS += -DCONFIG_CTRL_IFACE_UDP
1137endif
1138ifeq ($(CONFIG_CTRL_IFACE), named_pipe)
1139L_CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE
1140endif
1141OBJS += ctrl_iface.c ctrl_iface_$(CONFIG_CTRL_IFACE).c
1142endif
1143
1144ifdef CONFIG_CTRL_IFACE_DBUS
1145DBUS=y
1146DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE
1147DBUS_OBJS += dbus/dbus_old.c dbus/dbus_old_handlers.c
1148ifdef CONFIG_WPS
1149DBUS_OBJS += dbus/dbus_old_handlers_wps.c
1150endif
1151DBUS_OBJS += dbus/dbus_dict_helpers.c
1152ifndef DBUS_LIBS
1153DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
1154endif
1155ifndef DBUS_INCLUDE
1156DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
1157endif
1158dbus_version=$(subst ., ,$(shell $(PKG_CONFIG) --modversion dbus-1))
1159DBUS_VERSION_MAJOR=$(word 1,$(dbus_version))
1160DBUS_VERSION_MINOR=$(word 2,$(dbus_version))
1161ifeq ($(DBUS_VERSION_MAJOR),)
1162DBUS_VERSION_MAJOR=0
1163endif
1164ifeq ($(DBUS_VERSION_MINOR),)
1165DBUS_VERSION_MINOR=0
1166endif
1167DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR)
1168DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR)
1169DBUS_CFLAGS += $(DBUS_INCLUDE)
1170endif
1171
1172ifdef CONFIG_CTRL_IFACE_DBUS_NEW
1173DBUS=y
1174DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_NEW
1175DBUS_OBJS ?= dbus/dbus_dict_helpers.c
1176DBUS_OBJS += dbus/dbus_new_helpers.c
1177DBUS_OBJS += dbus/dbus_new.c dbus/dbus_new_handlers.c
1178ifdef CONFIG_WPS
1179DBUS_OBJS += dbus/dbus_new_handlers_wps.c
1180endif
1181ifdef CONFIG_P2P
1182DBUS_OBJS += dbus/dbus_new_handlers_p2p.c
1183endif
1184ifndef DBUS_LIBS
1185DBUS_LIBS := $(shell $(PKG_CONFIG) --libs dbus-1)
1186endif
1187ifndef DBUS_INCLUDE
1188DBUS_INCLUDE := $(shell $(PKG_CONFIG) --cflags dbus-1)
1189endif
1190ifdef CONFIG_CTRL_IFACE_DBUS_INTRO
1191DBUS_OBJS += dbus/dbus_new_introspect.c
1192DBUS_CFLAGS += -DCONFIG_CTRL_IFACE_DBUS_INTRO
1193endif
1194DBUS_CFLAGS += $(DBUS_INCLUDE)
1195endif
1196
1197ifdef DBUS
1198DBUS_CFLAGS += -DCONFIG_DBUS
1199DBUS_OBJS += dbus/dbus_common.c
1200endif
1201
1202OBJS += $(DBUS_OBJS)
1203L_CFLAGS += $(DBUS_CFLAGS)
1204LIBS += $(DBUS_LIBS)
1205
1206ifdef CONFIG_READLINE
1207OBJS_c += src/utils/edit_readline.c
1208LIBS_c += -lncurses -lreadline
1209else
1210ifdef CONFIG_WPA_CLI_EDIT
1211OBJS_c += src/utils/edit.c
1212else
1213OBJS_c += src/utils/edit_simple.c
1214endif
1215endif
1216
1217ifdef CONFIG_NATIVE_WINDOWS
1218L_CFLAGS += -DCONFIG_NATIVE_WINDOWS
1219LIBS += -lws2_32 -lgdi32 -lcrypt32
1220LIBS_c += -lws2_32
1221LIBS_p += -lws2_32 -lgdi32
1222ifeq ($(CONFIG_CRYPTO), cryptoapi)
1223LIBS_p += -lcrypt32
1224endif
1225endif
1226
1227ifdef CONFIG_NO_STDOUT_DEBUG
1228L_CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
1229ifndef CONFIG_CTRL_IFACE
1230L_CFLAGS += -DCONFIG_NO_WPA_MSG
1231endif
1232endif
1233
1234ifdef CONFIG_ANDROID_LOG
1235L_CFLAGS += -DCONFIG_ANDROID_LOG
1236endif
1237
1238ifdef CONFIG_IPV6
1239# for eapol_test only
1240L_CFLAGS += -DCONFIG_IPV6
1241endif
1242
1243ifdef NEED_BASE64
1244OBJS += src/utils/base64.c
1245endif
1246
1247ifdef NEED_SME
1248NEED_80211_COMMON=y
1249OBJS += sme.c
1250L_CFLAGS += -DCONFIG_SME
1251endif
1252
1253ifdef CONFIG_CLIENT_MLME
1254OBJS += mlme.c
1255L_CFLAGS += -DCONFIG_CLIENT_MLME
1256NEED_80211_COMMON=y
1257endif
1258
1259ifdef NEED_80211_COMMON
1260OBJS += src/common/ieee802_11_common.c
1261endif
1262
1263ifdef NEED_EAP_COMMON
1264OBJS += src/eap_common/eap_common.c
1265endif
1266
1267ifndef CONFIG_MAIN
1268CONFIG_MAIN=main
1269endif
1270
1271ifdef CONFIG_DEBUG_SYSLOG
1272L_CFLAGS += -DCONFIG_DEBUG_SYSLOG
1273ifdef CONFIG_DEBUG_SYSLOG_FACILITY
1274L_CFLAGS += -DLOG_HOSTAPD="$(CONFIG_DEBUG_SYSLOG_FACILITY)"
1275endif
1276endif
1277
1278ifdef CONFIG_DEBUG_FILE
1279L_CFLAGS += -DCONFIG_DEBUG_FILE
1280endif
1281
1282ifdef CONFIG_DELAYED_MIC_ERROR_REPORT
1283L_CFLAGS += -DCONFIG_DELAYED_MIC_ERROR_REPORT
1284endif
1285
1286ifdef CONFIG_FIPS
1287L_CFLAGS += -DCONFIG_FIPS
1288endif
1289
1290OBJS += $(SHA1OBJS) $(DESOBJS)
1291
1292OBJS_p += $(SHA1OBJS)
1293
1294ifdef CONFIG_BGSCAN_SIMPLE
1295L_CFLAGS += -DCONFIG_BGSCAN_SIMPLE
1296OBJS += bgscan_simple.c
1297NEED_BGSCAN=y
1298endif
1299
1300ifdef CONFIG_BGSCAN_LEARN
1301L_CFLAGS += -DCONFIG_BGSCAN_LEARN
1302OBJS += bgscan_learn.c
1303NEED_BGSCAN=y
1304endif
1305
1306ifdef NEED_BGSCAN
1307L_CFLAGS += -DCONFIG_BGSCAN
1308OBJS += bgscan.c
1309endif
1310
1311OBJS_wpa_rm := ctrl_iface.c mlme.c ctrl_iface_unix.c
1312OBJS_wpa := $(filter-out $(OBJS_wpa_rm),$(OBJS)) $(OBJS_h) tests/test_wpa.c
1313ifdef CONFIG_AUTHENTICATOR
1314OBJS_wpa += tests/link_test.c
1315endif
1316OBJS_wpa += $(OBJS_l2)
1317OBJS += wpa_supplicant.c events.c blacklist.c wpas_glue.c scan.c
1318OBJS_t := $(OBJS) $(OBJS_l2) eapol_test.c
1319OBJS_t += src/radius/radius_client.c
1320OBJS_t += src/radius/radius.c
1321ifndef CONFIG_AP
1322OBJS_t += src/utils/ip_addr.c
1323endif
1324OBJS_t2 := $(OBJS) $(OBJS_l2) preauth_test.c
1325OBJS += $(CONFIG_MAIN).c
1326
1327ifdef CONFIG_PRIVSEP
1328OBJS_priv += $(OBJS_d) src/drivers/drivers.c
1329OBJS_priv += $(OBJS_l2)
1330OBJS_priv += src/utils/os_$(CONFIG_OS).c
1331OBJS_priv += src/utils/$(CONFIG_ELOOP).c
1332OBJS_priv += src/utils/common.c
1333OBJS_priv += src/utils/wpa_debug.c
1334OBJS_priv += src/utils/wpabuf.c
1335OBJS_priv += wpa_priv.c
1336ifdef CONFIG_DRIVER_TEST
1337OBJS_priv += $(SHA1OBJS)
1338OBJS_priv += $(MD5OBJS)
1339ifeq ($(CONFIG_TLS), openssl)
1340OBJS_priv += src/crypto/crypto_openssl.c
1341endif
1342ifeq ($(CONFIG_TLS), gnutls)
1343OBJS_priv += src/crypto/crypto_gnutls.c
1344endif
1345ifeq ($(CONFIG_TLS), nss)
1346OBJS_priv += src/crypto/crypto_nss.c
1347endif
1348ifeq ($(CONFIG_TLS), internal)
1349ifeq ($(CONFIG_CRYPTO), libtomcrypt)
1350OBJS_priv += src/crypto/crypto_libtomcrypt.c
1351else
1352OBJS_priv += src/crypto/crypto_internal.c
1353endif
1354endif
1355endif # CONFIG_DRIVER_TEST
1356OBJS += src/l2_packet/l2_packet_privsep.c
1357OBJS += src/drivers/driver_privsep.c
1358EXTRA_progs += wpa_priv
1359else
1360OBJS += $(OBJS_d) src/drivers/drivers.c
1361OBJS += $(OBJS_l2)
1362endif
1363
1364ifdef CONFIG_NDIS_EVENTS_INTEGRATED
1365L_CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED
1366OBJS += src/drivers/ndis_events.c
1367EXTRALIBS += -loleaut32 -lole32 -luuid
1368ifdef PLATFORMSDKLIB
1369EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib
1370else
1371EXTRALIBS += WbemUuid.Lib
1372endif
1373endif
1374
1375ifndef LDO
1376LDO=$(CC)
1377endif
1378
1379########################
1380
1381include $(CLEAR_VARS)
1382LOCAL_MODULE := wpa_cli
1383LOCAL_MODULE_TAGS := debug
1384LOCAL_SHARED_LIBRARIES := libc libcutils
1385LOCAL_CFLAGS := $(L_CFLAGS)
1386LOCAL_SRC_FILES := $(OBJS_c)
1387LOCAL_C_INCLUDES := $(INCLUDES)
1388include $(BUILD_EXECUTABLE)
1389
1390########################
1391include $(CLEAR_VARS)
1392LOCAL_MODULE := wpa_supplicant
1393ifdef CONFIG_DRIVER_CUSTOM
1394LOCAL_STATIC_LIBRARIES := libCustomWifi
1395endif
1396ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)
1397LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB)
1398endif
1399LOCAL_SHARED_LIBRARIES := libc libcutils libcrypto libssl
1400ifdef CONFIG_DRIVER_NL80211
1401LOCAL_STATIC_LIBRARIES += libnl_2
1402endif
1403LOCAL_CFLAGS := $(L_CFLAGS)
1404LOCAL_SRC_FILES := $(OBJS)
1405LOCAL_C_INCLUDES := $(INCLUDES)
1406include $(BUILD_EXECUTABLE)
1407
1408########################
1409#
1410#include $(CLEAR_VARS)
1411#LOCAL_MODULE := eapol_test
1412#ifdef CONFIG_DRIVER_CUSTOM
1413#LOCAL_STATIC_LIBRARIES := libCustomWifi
1414#endif
1415#LOCAL_SHARED_LIBRARIES := libc libcrypto libssl
1416#LOCAL_CFLAGS := $(L_CFLAGS)
1417#LOCAL_SRC_FILES := $(OBJS_t)
1418#LOCAL_C_INCLUDES := $(INCLUDES)
1419#include $(BUILD_EXECUTABLE)
1420#
1421########################
1422#
1423#local_target_dir := $(TARGET_OUT)/etc/wifi
1424#
1425#include $(CLEAR_VARS)
1426#LOCAL_MODULE := wpa_supplicant.conf
1427#LOCAL_MODULE_TAGS := user
1428#LOCAL_MODULE_CLASS := ETC
1429#LOCAL_MODULE_PATH := $(local_target_dir)
1430#LOCAL_SRC_FILES := $(LOCAL_MODULE)
1431#include $(BUILD_PREBUILT)
1432#
1433########################
1434
1435endif # ifeq ($(WPA_BUILD_SUPPLICANT),true)
1436
1437include $(CLEAR_VARS)
1438LOCAL_MODULE = libwpa_client
1439LOCAL_CFLAGS = $(L_CFLAGS)
1440LOCAL_SRC_FILES = src/common/wpa_ctrl.c src/utils/os_$(CONFIG_OS).c
1441LOCAL_C_INCLUDES = $(INCLUDES)
1442LOCAL_SHARED_LIBRARIES := libcutils
1443LOCAL_COPY_HEADERS_TO := libwpa_client
1444LOCAL_COPY_HEADERS := src/common/wpa_ctrl.h
1445include $(BUILD_SHARED_LIBRARY)
1446