| ifndef CC |
| CC=gcc |
| endif |
| |
| ifndef CFLAGS |
| CFLAGS = -MMD -O2 -Wall -g |
| endif |
| |
| # Include directories for CVS version |
| CFLAGS += -I. -I../utils -I../hostapd |
| |
| ALL=wpa_supplicant wpa_passphrase wpa_cli |
| |
| all: verify_config $(ALL) dynamic_eap_methods |
| |
| verify_config: |
| @if [ ! -r .config ]; then \ |
| echo 'Building wpa_supplicant requires a configuration file'; \ |
| echo '(.config). See README for more instructions. You can'; \ |
| echo 'run "cp defconfig .config" to create an example'; \ |
| echo 'configuration.'; \ |
| exit 1; \ |
| fi |
| |
| mkconfig: |
| @if [ -e .config ]; then \ |
| echo '.config exists - did not replace it'; \ |
| exit 1; \ |
| fi |
| echo CONFIG_DRIVER_HOSTAP=y >> .config |
| echo CONFIG_DRIVER_WEXT=y >> .config |
| echo CONFIG_WIRELESS_EXTENSION=y >> .config |
| |
| install: all |
| mkdir -p $(DESTDIR)/usr/local/sbin/ |
| for i in $(ALL); do cp $$i $(DESTDIR)/usr/local/sbin/$$i; done |
| |
| OBJS = config.o \ |
| common.o md5.o md4.o \ |
| rc4.o sha1.o des.o |
| OBJS_p = wpa_passphrase.o sha1.o md5.o md4.o \ |
| common.o des.o |
| OBJS_c = wpa_cli.o wpa_ctrl.o |
| |
| -include .config |
| |
| ifndef CONFIG_OS |
| ifdef CONFIG_NATIVE_WINDOWS |
| CONFIG_OS=win32 |
| else |
| CONFIG_OS=unix |
| endif |
| endif |
| |
| ifeq ($(CONFIG_OS), internal) |
| CFLAGS += -DOS_NO_C_LIB_DEFINES |
| endif |
| |
| OBJS += os_$(CONFIG_OS).o |
| OBJS_p += os_$(CONFIG_OS).o |
| OBJS_c += os_$(CONFIG_OS).o |
| |
| ifndef CONFIG_ELOOP |
| CONFIG_ELOOP=eloop |
| endif |
| OBJS += $(CONFIG_ELOOP).o |
| |
| |
| ifdef CONFIG_EAPOL_TEST |
| CFLAGS += -Werror -DEAPOL_TEST |
| endif |
| |
| ifndef CONFIG_BACKEND |
| CONFIG_BACKEND=file |
| endif |
| |
| ifeq ($(CONFIG_BACKEND), file) |
| OBJS += config_file.o base64.o |
| CFLAGS += -DCONFIG_BACKEND_FILE |
| endif |
| |
| ifeq ($(CONFIG_BACKEND), winreg) |
| OBJS += config_winreg.o |
| endif |
| |
| ifeq ($(CONFIG_BACKEND), none) |
| OBJS += config_none.o |
| endif |
| |
| ifdef CONFIG_DRIVER_HOSTAP |
| CFLAGS += -DCONFIG_DRIVER_HOSTAP |
| OBJS_d += driver_hostap.o |
| CONFIG_WIRELESS_EXTENSION=y |
| endif |
| |
| ifdef CONFIG_DRIVER_WEXT |
| CFLAGS += -DCONFIG_DRIVER_WEXT |
| CONFIG_WIRELESS_EXTENSION=y |
| endif |
| |
| ifdef CONFIG_DRIVER_PRISM54 |
| CFLAGS += -DCONFIG_DRIVER_PRISM54 |
| OBJS_d += driver_prism54.o |
| CONFIG_WIRELESS_EXTENSION=y |
| endif |
| |
| ifdef CONFIG_DRIVER_HERMES |
| CFLAGS += -DCONFIG_DRIVER_HERMES |
| OBJS_d += driver_hermes.o |
| CONFIG_WIRELESS_EXTENSION=y |
| endif |
| |
| ifdef CONFIG_DRIVER_MADWIFI |
| CFLAGS += -DCONFIG_DRIVER_MADWIFI |
| OBJS_d += driver_madwifi.o |
| CONFIG_WIRELESS_EXTENSION=y |
| endif |
| |
| ifdef CONFIG_DRIVER_ATMEL |
| CFLAGS += -DCONFIG_DRIVER_ATMEL |
| OBJS_d += driver_atmel.o |
| CONFIG_WIRELESS_EXTENSION=y |
| endif |
| |
| ifdef CONFIG_DRIVER_NDISWRAPPER |
| CFLAGS += -DCONFIG_DRIVER_NDISWRAPPER |
| OBJS_d += driver_ndiswrapper.o |
| CONFIG_WIRELESS_EXTENSION=y |
| endif |
| |
| ifdef CONFIG_DRIVER_BROADCOM |
| CFLAGS += -DCONFIG_DRIVER_BROADCOM |
| OBJS_d += driver_broadcom.o |
| endif |
| |
| ifdef CONFIG_DRIVER_IPW |
| CFLAGS += -DCONFIG_DRIVER_IPW |
| OBJS_d += driver_ipw.o |
| CONFIG_WIRELESS_EXTENSION=y |
| endif |
| |
| ifdef CONFIG_DRIVER_BSD |
| CFLAGS += -DCONFIG_DRIVER_BSD |
| OBJS_d += driver_bsd.o |
| ifndef CONFIG_L2_PACKET |
| CONFIG_L2_PACKET=freebsd |
| endif |
| endif |
| |
| ifdef CONFIG_DRIVER_NDIS |
| CFLAGS += -DCONFIG_DRIVER_NDIS |
| OBJS_d += driver_ndis.o |
| ifdef CONFIG_NDIS_EVENTS_INTEGRATED |
| OBJS_d += driver_ndis_.o |
| endif |
| ifndef CONFIG_L2_PACKET |
| CONFIG_L2_PACKET=pcap |
| endif |
| CONFIG_WINPCAP=y |
| ifdef CONFIG_USE_NDISUIO |
| CFLAGS += -DCONFIG_USE_NDISUIO |
| endif |
| endif |
| |
| ifdef CONFIG_DRIVER_WIRED |
| CFLAGS += -DCONFIG_DRIVER_WIRED |
| OBJS_d += driver_wired.o |
| endif |
| |
| ifdef CONFIG_DRIVER_TEST |
| CFLAGS += -DCONFIG_DRIVER_TEST |
| OBJS_d += driver_test.o |
| endif |
| |
| ifndef CONFIG_L2_PACKET |
| CONFIG_L2_PACKET=linux |
| endif |
| |
| OBJS += l2_packet_$(CONFIG_L2_PACKET).o |
| |
| ifeq ($(CONFIG_L2_PACKET), pcap) |
| ifdef CONFIG_WINPCAP |
| CFLAGS += -DCONFIG_WINPCAP |
| LIBS += -lwpcap -lpacket |
| LIBS_w += -lwpcap |
| else |
| LIBS += -ldnet -lpcap |
| endif |
| endif |
| |
| ifeq ($(CONFIG_L2_PACKET), winpcap) |
| LIBS += -lwpcap -lpacket |
| LIBS_w += -lwpcap |
| endif |
| |
| ifeq ($(CONFIG_L2_PACKET), freebsd) |
| LIBS += -lpcap |
| endif |
| |
| ifdef CONFIG_EAP_TLS |
| # EAP-TLS |
| ifeq ($(CONFIG_EAP_TLS), dyn) |
| CFLAGS += -DEAP_TLS_DYNAMIC |
| EAPDYN += eap_tls.so |
| else |
| CFLAGS += -DEAP_TLS |
| OBJS += eap_tls.o |
| endif |
| TLS_FUNCS=y |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_EAP_PEAP |
| # EAP-PEAP |
| ifeq ($(CONFIG_EAP_PEAP), dyn) |
| CFLAGS += -DEAP_PEAP_DYNAMIC |
| EAPDYN += eap_peap.so |
| else |
| CFLAGS += -DEAP_PEAP |
| OBJS += eap_peap.o |
| endif |
| TLS_FUNCS=y |
| CONFIG_IEEE8021X_EAPOL=y |
| CONFIG_EAP_TLV=y |
| endif |
| |
| ifdef CONFIG_EAP_TTLS |
| # EAP-TTLS |
| ifeq ($(CONFIG_EAP_TTLS), dyn) |
| CFLAGS += -DEAP_TTLS_DYNAMIC |
| EAPDYN += eap_ttls.so |
| else |
| CFLAGS += -DEAP_TTLS |
| OBJS += eap_ttls.o |
| endif |
| MS_FUNCS=y |
| TLS_FUNCS=y |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_EAP_MD5 |
| # EAP-MD5 |
| ifeq ($(CONFIG_EAP_MD5), dyn) |
| CFLAGS += -DEAP_MD5_DYNAMIC |
| EAPDYN += eap_md5.so |
| else |
| CFLAGS += -DEAP_MD5 |
| OBJS += eap_md5.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| # backwards compatibility for old spelling |
| ifdef CONFIG_MSCHAPV2 |
| ifndef CONFIG_EAP_MSCHAPV2 |
| CONFIG_EAP_MSCHAPV2=y |
| endif |
| endif |
| |
| ifdef CONFIG_EAP_MSCHAPV2 |
| # EAP-MSCHAPv2 |
| ifeq ($(CONFIG_EAP_MSCHAPV2), dyn) |
| CFLAGS += -DEAP_MSCHAPv2_DYNAMIC |
| EAPDYN += eap_mschapv2.so |
| else |
| CFLAGS += -DEAP_MSCHAPv2 |
| OBJS += eap_mschapv2.o |
| endif |
| MS_FUNCS=y |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_EAP_GTC |
| # EAP-GTC |
| ifeq ($(CONFIG_EAP_GTC), dyn) |
| CFLAGS += -DEAP_GTC_DYNAMIC |
| EAPDYN += eap_gtc.so |
| else |
| CFLAGS += -DEAP_GTC |
| OBJS += eap_gtc.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_EAP_OTP |
| # EAP-OTP |
| ifeq ($(CONFIG_EAP_OTP), dyn) |
| CFLAGS += -DEAP_OTP_DYNAMIC |
| EAPDYN += eap_otp.so |
| else |
| CFLAGS += -DEAP_OTP |
| OBJS += eap_otp.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_EAP_SIM |
| # EAP-SIM |
| ifeq ($(CONFIG_EAP_SIM), dyn) |
| CFLAGS += -DEAP_SIM_DYNAMIC |
| EAPDYN += eap_sim.so |
| else |
| CFLAGS += -DEAP_SIM |
| OBJS += eap_sim.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| CONFIG_EAP_SIM_COMMON=y |
| endif |
| |
| ifdef CONFIG_EAP_LEAP |
| # EAP-LEAP |
| ifeq ($(CONFIG_EAP_LEAP), dyn) |
| CFLAGS += -DEAP_LEAP_DYNAMIC |
| EAPDYN += eap_leap.so |
| else |
| CFLAGS += -DEAP_LEAP |
| OBJS += eap_leap.o |
| endif |
| MS_FUNCS=y |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_EAP_PSK |
| # EAP-PSK |
| ifeq ($(CONFIG_EAP_PSK), dyn) |
| CFLAGS += -DEAP_PSK_DYNAMIC |
| EAPDYN += eap_psk.so |
| else |
| CFLAGS += -DEAP_PSK |
| OBJS += eap_psk.o eap_psk_common.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| NEED_AES=y |
| endif |
| |
| ifdef CONFIG_EAP_AKA |
| # EAP-AKA |
| ifeq ($(CONFIG_EAP_AKA), dyn) |
| CFLAGS += -DEAP_AKA_DYNAMIC |
| EAPDYN += eap_aka.so |
| else |
| CFLAGS += -DEAP_AKA |
| OBJS += eap_aka.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| CONFIG_EAP_SIM_COMMON=y |
| endif |
| |
| ifdef CONFIG_EAP_SIM_COMMON |
| OBJS += eap_sim_common.o |
| NEED_AES=y |
| endif |
| |
| ifdef CONFIG_EAP_TLV |
| # EAP-TLV |
| CFLAGS += -DEAP_TLV |
| OBJS += eap_tlv.o |
| endif |
| |
| ifdef CONFIG_EAP_FAST |
| # EAP-FAST |
| ifeq ($(CONFIG_EAP_FAST), dyn) |
| CFLAGS += -DEAP_FAST_DYNAMIC |
| EAPDYN += eap_fast.so |
| else |
| CFLAGS += -DEAP_FAST |
| OBJS += eap_fast.o |
| endif |
| TLS_FUNCS=y |
| endif |
| |
| ifdef CONFIG_EAP_PAX |
| # EAP-PAX |
| ifeq ($(CONFIG_EAP_PAX), dyn) |
| CFLAGS += -DEAP_PAX_DYNAMIC |
| EAPDYN += eap_pax.so |
| else |
| CFLAGS += -DEAP_PAX |
| OBJS += eap_pax.o eap_pax_common.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_EAP_SAKE |
| # EAP-SAKE |
| ifeq ($(CONFIG_EAP_SAKE), dyn) |
| CFLAGS += -DEAP_SAKE_DYNAMIC |
| EAPDYN += eap_sake.so |
| else |
| CFLAGS += -DEAP_SAKE |
| OBJS += eap_sake.o eap_sake_common.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_EAP_GPSK |
| # EAP-GPSK |
| ifeq ($(CONFIG_EAP_GPSK), dyn) |
| CFLAGS += -DEAP_GPSK_DYNAMIC |
| EAPDYN += eap_gpsk.so |
| else |
| CFLAGS += -DEAP_GPSK |
| OBJS += eap_gpsk.o eap_gpsk_common.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| ifdef CONFIG_EAP_GPSK_SHA256 |
| CFLAGS += -DEAP_GPSK_SHA256 |
| NEED_SHA256=y |
| endif |
| endif |
| |
| ifdef CONFIG_EAP_VENDOR_TEST |
| ifeq ($(CONFIG_EAP_VENDOR_TEST), dyn) |
| CFLAGS += -DEAP_VENDOR_TEST_DYNAMIC |
| EAPDYN += eap_vendor_test.so |
| else |
| CFLAGS += -DEAP_VENDOR_TEST |
| OBJS += eap_vendor_test.o |
| endif |
| CONFIG_IEEE8021X_EAPOL=y |
| endif |
| |
| ifdef CONFIG_IEEE8021X_EAPOL |
| # IEEE 802.1X/EAPOL state machines (e.g., for RADIUS authentication) |
| CFLAGS += -DIEEE8021X_EAPOL |
| OBJS += eapol_sm.o eap.o eap_methods.o |
| ifdef CONFIG_DYNAMIC_EAP_METHODS |
| CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS |
| LIBS += -ldl -rdynamic |
| endif |
| endif |
| |
| ifdef CONFIG_PCSC |
| # PC/SC interface for smartcards (USIM, GSM SIM) |
| CFLAGS += -DPCSC_FUNCS -I/usr/include/PCSC |
| OBJS += pcsc_funcs.o |
| # -lpthread may not be needed depending on how pcsc-lite was configured |
| ifdef CONFIG_NATIVE_WINDOWS |
| #Once MinGW gets support for WinScard, -lwinscard could be used instead of the |
| #dynamic symbol loading that is now used in pcsc_funcs.c |
| #LIBS += -lwinscard |
| else |
| LIBS += -lpcsclite -lpthread |
| endif |
| endif |
| |
| ifndef CONFIG_TLS |
| CONFIG_TLS=openssl |
| endif |
| |
| ifeq ($(CONFIG_TLS), internal) |
| ifndef CONFIG_CRYPTO |
| CONFIG_CRYPTO=internal |
| endif |
| endif |
| ifeq ($(CONFIG_CRYPTO), libtomcrypt) |
| CFLAGS += -DCONFIG_INTERNAL_X509 |
| endif |
| ifeq ($(CONFIG_CRYPTO), internal) |
| CFLAGS += -DCONFIG_INTERNAL_X509 |
| endif |
| |
| |
| ifdef TLS_FUNCS |
| # Shared TLS functions (needed for EAP_TLS, EAP_PEAP, EAP_TTLS, and EAP_FAST) |
| CFLAGS += -DEAP_TLS_FUNCS |
| OBJS += eap_tls_common.o |
| ifeq ($(CONFIG_TLS), openssl) |
| CFLAGS += -DEAP_TLS_OPENSSL |
| OBJS += tls_openssl.o |
| LIBS += -lssl -lcrypto |
| LIBS_p += -lcrypto |
| endif |
| ifeq ($(CONFIG_TLS), gnutls) |
| OBJS += tls_gnutls.o |
| LIBS += -lgnutls -lgcrypt -lgpg-error |
| LIBS_p += -lgcrypt |
| ifdef CONFIG_GNUTLS_EXTRA |
| CFLAGS += -DCONFIG_GNUTLS_EXTRA |
| LIBS += -lgnutls-extra |
| endif |
| endif |
| ifeq ($(CONFIG_TLS), schannel) |
| OBJS += tls_schannel.o |
| endif |
| ifeq ($(CONFIG_TLS), internal) |
| OBJS += tls_internal.o tlsv1_common.o tlsv1_client.o asn1.o x509v3.o |
| OBJS_p += asn1.o rc4.o aes_wrap.o |
| ifneq ($(CONFIG_BACKEND), file) |
| OBJS += base64.o |
| endif |
| CFLAGS += -DCONFIG_TLS_INTERNAL |
| ifeq ($(CONFIG_CRYPTO), internal) |
| ifdef CONFIG_INTERNAL_LIBTOMMATH |
| CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH |
| else |
| LIBS += -ltommath |
| LIBS_p += -ltommath |
| endif |
| endif |
| ifeq ($(CONFIG_CRYPTO), libtomcrypt) |
| LIBS += -ltomcrypt -ltfm |
| LIBS_p += -ltomcrypt -ltfm |
| endif |
| endif |
| ifeq ($(CONFIG_TLS), none) |
| OBJS += tls_none.o |
| CFLAGS += -DEAP_TLS_NONE |
| CONFIG_INTERNAL_AES=y |
| CONFIG_INTERNAL_SHA1=y |
| CONFIG_INTERNAL_MD5=y |
| CONFIG_INTERNAL_SHA256=y |
| endif |
| ifdef CONFIG_SMARTCARD |
| ifndef CONFIG_NATIVE_WINDOWS |
| ifneq ($(CONFIG_L2_PACKET), freebsd) |
| LIBS += -ldl |
| endif |
| endif |
| endif |
| NEED_CRYPTO=y |
| else |
| OBJS += tls_none.o |
| endif |
| |
| ifdef CONFIG_PKCS12 |
| CFLAGS += -DPKCS12_FUNCS |
| endif |
| |
| ifdef CONFIG_SMARTCARD |
| CFLAGS += -DCONFIG_SMARTCARD |
| endif |
| |
| ifdef MS_FUNCS |
| OBJS += ms_funcs.o |
| NEED_CRYPTO=y |
| endif |
| |
| ifdef NEED_CRYPTO |
| ifndef TLS_FUNCS |
| ifeq ($(CONFIG_TLS), openssl) |
| LIBS += -lcrypto |
| LIBS_p += -lcrypto |
| endif |
| ifeq ($(CONFIG_TLS), gnutls) |
| LIBS += -lgcrypt |
| LIBS_p += -lgcrypt |
| endif |
| ifeq ($(CONFIG_TLS), schannel) |
| endif |
| ifeq ($(CONFIG_TLS), internal) |
| ifeq ($(CONFIG_CRYPTO), libtomcrypt) |
| LIBS += -ltomcrypt -ltfm |
| LIBS_p += -ltomcrypt -ltfm |
| endif |
| endif |
| endif |
| ifeq ($(CONFIG_TLS), openssl) |
| OBJS += crypto.o |
| OBJS_p += crypto.o |
| CONFIG_INTERNAL_SHA256=y |
| endif |
| ifeq ($(CONFIG_TLS), gnutls) |
| OBJS += crypto_gnutls.o |
| OBJS_p += crypto_gnutls.o |
| CONFIG_INTERNAL_SHA256=y |
| endif |
| ifeq ($(CONFIG_TLS), schannel) |
| OBJS += crypto_cryptoapi.o |
| OBJS_p += crypto_cryptoapi.o |
| CONFIG_INTERNAL_SHA256=y |
| endif |
| ifeq ($(CONFIG_TLS), internal) |
| ifeq ($(CONFIG_CRYPTO), libtomcrypt) |
| OBJS += crypto_libtomcrypt.o |
| OBJS_p += crypto_libtomcrypt.o |
| CONFIG_INTERNAL_SHA256=y |
| endif |
| ifeq ($(CONFIG_CRYPTO), internal) |
| OBJS += crypto_internal.o rsa.o bignum.o |
| OBJS_p += crypto_internal.o rsa.o bignum.o |
| CFLAGS += -DCONFIG_CRYPTO_INTERNAL |
| CONFIG_INTERNAL_AES=y |
| CONFIG_INTERNAL_DES=y |
| CONFIG_INTERNAL_SHA1=y |
| CONFIG_INTERNAL_MD4=y |
| CONFIG_INTERNAL_MD5=y |
| CONFIG_INTERNAL_SHA256=y |
| endif |
| ifeq ($(CONFIG_CRYPTO), cryptoapi) |
| OBJS += crypto_cryptoapi.o |
| OBJS_p += crypto_cryptoapi.o |
| CFLAGS += -DCONFIG_CRYPTO_CRYPTOAPI |
| CONFIG_INTERNAL_SHA256=y |
| endif |
| endif |
| ifeq ($(CONFIG_TLS), none) |
| OBJS += crypto_none.o |
| OBJS_p += crypto_none.o |
| CONFIG_INTERNAL_SHA256=y |
| endif |
| else |
| CONFIG_INTERNAL_AES=y |
| CONFIG_INTERNAL_SHA1=y |
| CONFIG_INTERNAL_MD5=y |
| endif |
| |
| ifdef CONFIG_INTERNAL_AES |
| CFLAGS += -DINTERNAL_AES |
| endif |
| ifdef CONFIG_INTERNAL_SHA1 |
| CFLAGS += -DINTERNAL_SHA1 |
| endif |
| ifdef CONFIG_INTERNAL_SHA256 |
| CFLAGS += -DINTERNAL_SHA256 |
| endif |
| ifdef CONFIG_INTERNAL_MD5 |
| CFLAGS += -DINTERNAL_MD5 |
| endif |
| ifdef CONFIG_INTERNAL_MD4 |
| CFLAGS += -DINTERNAL_MD4 |
| endif |
| ifdef CONFIG_INTERNAL_DES |
| CFLAGS += -DINTERNAL_DES |
| endif |
| |
| ifdef NEED_SHA256 |
| OBJS += sha256.o |
| endif |
| |
| ifdef CONFIG_WIRELESS_EXTENSION |
| CFLAGS += -DCONFIG_WIRELESS_EXTENSION |
| OBJS_d += driver_wext.o |
| endif |
| |
| ifdef CONFIG_CTRL_IFACE |
| ifeq ($(CONFIG_CTRL_IFACE), y) |
| ifdef CONFIG_NATIVE_WINDOWS |
| CONFIG_CTRL_IFACE=named_pipe |
| else |
| CONFIG_CTRL_IFACE=unix |
| endif |
| endif |
| CFLAGS += -DCONFIG_CTRL_IFACE |
| ifeq ($(CONFIG_CTRL_IFACE), unix) |
| CFLAGS += -DCONFIG_CTRL_IFACE_UNIX |
| endif |
| ifeq ($(CONFIG_CTRL_IFACE), udp) |
| CFLAGS += -DCONFIG_CTRL_IFACE_UDP |
| endif |
| ifeq ($(CONFIG_CTRL_IFACE), named_pipe) |
| CFLAGS += -DCONFIG_CTRL_IFACE_NAMED_PIPE |
| endif |
| OBJS += ctrl_iface.o ctrl_iface_$(CONFIG_CTRL_IFACE).o |
| endif |
| |
| ifdef CONFIG_CTRL_IFACE_DBUS |
| CFLAGS += -DCONFIG_CTRL_IFACE_DBUS -DDBUS_API_SUBJECT_TO_CHANGE |
| OBJS += ctrl_iface_dbus.o ctrl_iface_dbus_handlers.o dbus_dict_helpers.o |
| ifndef DBUS_LIBS |
| DBUS_LIBS := $(shell pkg-config --libs dbus-1) |
| endif |
| LIBS += $(DBUS_LIBS) |
| ifndef DBUS_INCLUDE |
| DBUS_INCLUDE := $(shell pkg-config --cflags dbus-1) |
| endif |
| dbus_version=$(subst ., ,$(shell pkg-config --modversion dbus-1)) |
| DBUS_VERSION_MAJOR=$(word 1,$(dbus_version)) |
| DBUS_VERSION_MINOR=$(word 2,$(dbus_version)) |
| ifeq ($(DBUS_VERSION_MAJOR),) |
| DBUS_VERSION_MAJOR=0 |
| endif |
| ifeq ($(DBUS_VERSION_MINOR),) |
| DBUS_VERSION_MINOR=0 |
| endif |
| DBUS_INCLUDE += -DDBUS_VERSION_MAJOR=$(DBUS_VERSION_MAJOR) |
| DBUS_INCLUDE += -DDBUS_VERSION_MINOR=$(DBUS_VERSION_MINOR) |
| CFLAGS += $(DBUS_INCLUDE) |
| endif |
| |
| ifdef CONFIG_READLINE |
| CFLAGS += -DCONFIG_READLINE |
| LIBS_c += -lncurses -lreadline |
| endif |
| |
| ifdef CONFIG_NATIVE_WINDOWS |
| CFLAGS += -DCONFIG_NATIVE_WINDOWS |
| LIBS += -lws2_32 -lgdi32 -lcrypt32 |
| LIBS_c += -lws2_32 |
| LIBS_p += -lws2_32 |
| ifeq ($(CONFIG_CRYPTO), cryptoapi) |
| LIBS_p += -lcrypt32 |
| endif |
| endif |
| |
| ifdef CONFIG_NO_STDOUT_DEBUG |
| CFLAGS += -DCONFIG_NO_STDOUT_DEBUG |
| ifndef CONFIG_CTRL_IFACE |
| CFLAGS += -DCONFIG_NO_WPA_MSG |
| endif |
| endif |
| |
| ifdef CONFIG_IPV6 |
| # for eapol_test only |
| CFLAGS += -DCONFIG_IPV6 |
| endif |
| |
| ifdef CONFIG_PEERKEY |
| CFLAGS += -DCONFIG_PEERKEY |
| endif |
| |
| ifdef CONFIG_IEEE80211W |
| CFLAGS += -DCONFIG_IEEE80211W |
| NEED_SHA256=y |
| endif |
| |
| ifndef CONFIG_NO_WPA |
| OBJS += wpa.o preauth.o pmksa_cache.o |
| NEED_AES=y |
| else |
| CFLAGS += -DCONFIG_NO_WPA -DCONFIG_NO_WPA2 |
| endif |
| |
| ifdef CONFIG_NO_WPA2 |
| CFLAGS += -DCONFIG_NO_WPA2 |
| endif |
| |
| ifdef CONFIG_NO_AES_EXTRAS |
| CFLAGS += -DCONFIG_NO_AES_WRAP |
| CFLAGS += -DCONFIG_NO_AES_CTR -DCONFIG_NO_AES_OMAC1 |
| CFLAGS += -DCONFIG_NO_AES_EAX -DCONFIG_NO_AES_CBC |
| endif |
| |
| ifdef NEED_AES |
| OBJS += aes_wrap.o |
| endif |
| |
| ifdef CONFIG_CLIENT_MLME |
| OBJS += mlme.o |
| CFLAGS += -DCONFIG_CLIENT_MLME |
| endif |
| |
| ifndef CONFIG_MAIN |
| CONFIG_MAIN=main |
| endif |
| |
| ifdef CONFIG_DEBUG_FILE |
| CFLAGS += -DCONFIG_DEBUG_FILE |
| endif |
| |
| OBJS += wpa_supplicant.o events.o |
| OBJS_t := $(OBJS) eapol_test.o radius.o radius_client.o |
| OBJS_t2 := $(OBJS) preauth_test.o |
| OBJS += $(CONFIG_MAIN).o drivers.o $(OBJS_d) |
| |
| ifdef CONFIG_NDIS_EVENTS_INTEGRATED |
| CFLAGS += -DCONFIG_NDIS_EVENTS_INTEGRATED |
| OBJS += ndis_events.o |
| EXTRALIBS += -loleaut32 -lole32 -luuid |
| ifdef PLATFORMSDKLIB |
| EXTRALIBS += $(PLATFORMSDKLIB)/WbemUuid.Lib |
| else |
| EXTRALIBS += WbemUuid.Lib |
| endif |
| endif |
| |
| ifndef LDO |
| LDO=$(CC) |
| endif |
| |
| dynamic_eap_methods: $(EAPDYN) |
| |
| wpa_supplicant: .config $(OBJS) |
| $(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) |
| |
| eapol_test: .config $(OBJS_t) |
| $(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS) |
| |
| preauth_test: .config $(OBJS_t2) |
| $(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS) |
| |
| wpa_passphrase: $(OBJS_p) |
| $(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) |
| |
| wpa_cli: $(OBJS_c) |
| $(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c) |
| |
| OBJSa=asn1_test.o asn1.o x509v3.o common.o os_unix.o \ |
| crypto_$(CONFIG_CRYPTO).o md5.o sha1.o \ |
| rc4.o des.o aes_wrap.o \ |
| bignum.o rsa.o |
| asn1_test: $(OBJSa) |
| $(LDO) $(LDFLAGS) -o asn1_test $(OBJSa) |
| |
| OBJSx=tests/test_x509v3.o asn1.o x509v3.o \ |
| common.o os_unix.o \ |
| crypto_$(CONFIG_CRYPTO).o \ |
| md5.o sha1.o \ |
| rc4.o des.o aes_wrap.o \ |
| bignum.o rsa.o |
| test_x509v3: $(OBJSx) |
| $(LDO) $(LDFLAGS) -o test_x509v3 $(OBJSx) |
| |
| win_if_list: win_if_list.c |
| $(LDO) $(LDFLAGS) -o $@ win_if_list.c $(CFLAGS) $(LIBS_w) |
| |
| eap_psk.so: eap_psk.c eap_psk_common.c |
| $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ |
| -Deap_peer_psk_register=eap_peer_method_dynamic_init |
| |
| eap_pax.so: eap_pax.c eap_pax_common.c |
| $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ |
| -Deap_peer_pax_register=eap_peer_method_dynamic_init |
| |
| eap_sake.so: eap_sake.c eap_sake_common.c |
| $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $^ \ |
| -Deap_peer_sake_register=eap_peer_method_dynamic_init |
| |
| %.so: %.c |
| $(CC) -o $@ $(CFLAGS) -shared -rdynamic -fPIC $< \ |
| -D$(*:eap_%=eap_peer_%)_register=eap_peer_method_dynamic_init |
| |
| |
| wpa_supplicant.exe: wpa_supplicant |
| mv -f $< $@ |
| wpa_cli.exe: wpa_cli |
| mv -f $< $@ |
| wpa_passphrase.exe: wpa_passphrase |
| mv -f $< $@ |
| win_if_list.exe: win_if_list |
| mv -f $< $@ |
| eapol_test.exe: eapol_test |
| mv -f $< $@ |
| |
| WINALL=wpa_supplicant.exe wpa_cli.exe wpa_passphrase.exe win_if_list.exe |
| |
| windows-bin: $(WINALL) |
| $(STRIP) $(WINALL) |
| |
| wpa_gui/Makefile: |
| qmake -o wpa_gui/Makefile wpa_gui/wpa_gui.pro |
| |
| wpa_gui: wpa_gui/Makefile |
| $(MAKE) -C wpa_gui |
| |
| TEST_MS_FUNCS_OBJS = crypto.o sha1.o md5.o \ |
| os_unix.o rc4.o tests/test_ms_funcs.o |
| test-ms_funcs: $(TEST_MS_FUNCS_OBJS) |
| $(LDO) $(LDFLAGS) -o $@ $(TEST_MS_FUNCS_OBJS) $(LIBS) -lcrypto |
| ./test-ms_funcs |
| rm test-ms_funcs |
| |
| TEST_SHA1_OBJS = sha1.o md5.o tests/test_sha1.o #crypto.o |
| test-sha1: $(TEST_SHA1_OBJS) |
| $(LDO) $(LDFLAGS) -o $@ $(TEST_SHA1_OBJS) $(LIBS) |
| ./test-sha1 |
| rm test-sha1 |
| |
| TEST_SHA256_OBJS = sha256.o md5.o tests/test_sha256.o crypto.o |
| test-sha256: $(TEST_SHA256_OBJS) |
| $(LDO) $(LDFLAGS) -o $@ $(TEST_SHA256_OBJS) $(LIBS) |
| ./test-sha256 |
| rm test-sha256 |
| |
| TEST_AES_OBJS = aes_wrap.o tests/test_aes.o # crypto.o |
| test-aes: $(TEST_AES_OBJS) |
| $(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS) |
| ./test-aes |
| rm test-aes |
| |
| TEST_EAP_SIM_COMMON_OBJS = sha1.o md5.o \ |
| aes_wrap.o common.o os_unix.o \ |
| tests/test_eap_sim_common.o |
| test-eap_sim_common: $(TEST_EAP_SIM_COMMON_OBJS) |
| $(LDO) $(LDFLAGS) -o $@ $(TEST_AES_OBJS) $(LIBS) |
| ./test-eap_sim_common |
| rm test-eap_sim_common |
| |
| TEST_MD4_OBJS = md4.o tests/test_md4.o #crypto.o |
| test-md4: $(TEST_MD4_OBJS) |
| $(LDO) $(LDFLAGS) -o $@ $(TEST_MD4_OBJS) $(LIBS) |
| ./test-md4 |
| rm test-md4 |
| |
| TEST_MD5_OBJS = md5.o tests/test_md5.o #crypto.o |
| test-md5: $(TEST_MD5_OBJS) |
| $(LDO) $(LDFLAGS) -o $@ $(TEST_MD5_OBJS) $(LIBS) |
| ./test-md5 |
| rm test-md5 |
| |
| tests: test-ms_funcs test-sha1 test-aes test-eap_sim_common test-md4 test-md5 |
| |
| clean: |
| rm -f core *~ *.o *.d eap_*.so $(ALL) $(WINALL) |
| |
| %.eps: %.fig |
| fig2dev -L eps $*.fig $*.eps |
| |
| %.png: %.fig |
| fig2dev -L png -m 3 $*.fig | pngtopnm | pnmscale 0.4 | pnmtopng \ |
| > $*.png |
| |
| docs-pics: doc/wpa_supplicant.png doc/wpa_supplicant.eps |
| |
| docs: docs-pics |
| doxygen doc/doxygen.full |
| $(MAKE) -C doc/latex |
| cp doc/latex/refman.pdf wpa_supplicant-devel.pdf |
| |
| docs-fast: docs-pics |
| doxygen doc/doxygen.fast |
| |
| clean-docs: |
| rm -rf doc/latex doc/html |
| rm -f doc/wpa_supplicant.{eps,png} wpa_supplicant-devel.pdf |
| |
| -include $(OBJS:%.o=%.d) |