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