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