Makefile 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. #
  3. # Copyright (C) 2006-2021 OpenWrt.org
  4. include $(TOPDIR)/rules.mk
  5. PKG_NAME:=hostapd
  6. PKG_RELEASE:=$(AUTORELEASE)
  7. PKG_SOURCE_URL:=http://w1.fi/hostap.git
  8. PKG_SOURCE_PROTO:=git
  9. PKG_SOURCE_DATE:=2021-05-22
  10. PKG_SOURCE_VERSION:=b102f19bcc53c7f7db3951424d4d46709b4f1986
  11. PKG_MIRROR_HASH:=cb3cb968883042fc582752be1607586696c18e6ecf9808c9a8ac50e204584367
  12. PKG_MAINTAINER:=Felix Fietkau <[email protected]>
  13. PKG_LICENSE:=BSD-3-Clause
  14. PKG_CPE_ID:=cpe:/a:w1.fi:hostapd
  15. PKG_BUILD_PARALLEL:=1
  16. PKG_ASLR_PIE_REGULAR:=1
  17. PKG_CONFIG_DEPENDS:= \
  18. CONFIG_PACKAGE_kmod-ath9k \
  19. CONFIG_PACKAGE_kmod-cfg80211 \
  20. CONFIG_PACKAGE_hostapd \
  21. CONFIG_PACKAGE_hostapd-basic \
  22. CONFIG_PACKAGE_hostapd-mini \
  23. CONFIG_WPA_RFKILL_SUPPORT \
  24. CONFIG_DRIVER_WEXT_SUPPORT \
  25. CONFIG_DRIVER_11N_SUPPORT \
  26. CONFIG_DRIVER_11AC_SUPPORT \
  27. CONFIG_DRIVER_11AX_SUPPORT \
  28. CONFIG_WPA_ENABLE_WEP
  29. EAPOL_TEST_PROVIDERS:=eapol-test eapol-test-openssl eapol-test-wolfssl
  30. SUPPLICANT_PROVIDERS:=
  31. HOSTAPD_PROVIDERS:=
  32. LOCAL_TYPE=$(strip \
  33. $(if $(findstring wpad,$(BUILD_VARIANT)),wpad, \
  34. $(if $(findstring supplicant,$(BUILD_VARIANT)),supplicant, \
  35. hostapd \
  36. )))
  37. LOCAL_AND_LIB_VARIANT=$(patsubst hostapd-%,%,\
  38. $(patsubst wpad-%,%,\
  39. $(patsubst supplicant-%,%,\
  40. $(BUILD_VARIANT)\
  41. )))
  42. LOCAL_VARIANT=$(patsubst %-internal,%,\
  43. $(patsubst %-openssl,%,\
  44. $(patsubst %-wolfssl,%,\
  45. $(LOCAL_AND_LIB_VARIANT)\
  46. )))
  47. SSL_VARIANT=$(strip \
  48. $(if $(findstring openssl,$(LOCAL_AND_LIB_VARIANT)),openssl,\
  49. $(if $(findstring wolfssl,$(LOCAL_AND_LIB_VARIANT)),wolfssl,\
  50. internal\
  51. )))
  52. CONFIG_VARIANT:=$(LOCAL_VARIANT)
  53. ifeq ($(LOCAL_VARIANT),mesh)
  54. CONFIG_VARIANT:=full
  55. endif
  56. include $(INCLUDE_DIR)/package.mk
  57. STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(CONFIG_WPA_MSG_MIN_PRIORITY)
  58. ifneq ($(CONFIG_DRIVER_11N_SUPPORT),)
  59. HOSTAPD_IEEE80211N:=y
  60. endif
  61. ifneq ($(CONFIG_DRIVER_11AC_SUPPORT),)
  62. HOSTAPD_IEEE80211AC:=y
  63. endif
  64. ifneq ($(CONFIG_DRIVER_11AX_SUPPORT),)
  65. HOSTAPD_IEEE80211AX:=y
  66. endif
  67. DRIVER_MAKEOPTS= \
  68. CONFIG_ACS=$(CONFIG_PACKAGE_kmod-cfg80211) \
  69. CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \
  70. CONFIG_IEEE80211N=$(HOSTAPD_IEEE80211N) \
  71. CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \
  72. CONFIG_IEEE80211AX=$(HOSTAPD_IEEE80211AX) \
  73. CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \
  74. ifeq ($(SSL_VARIANT),openssl)
  75. DRIVER_MAKEOPTS += CONFIG_TLS=openssl CONFIG_SAE=y
  76. TARGET_LDFLAGS += -lcrypto -lssl
  77. ifeq ($(LOCAL_VARIANT),basic)
  78. DRIVER_MAKEOPTS += CONFIG_OWE=y
  79. endif
  80. ifeq ($(LOCAL_VARIANT),mesh)
  81. DRIVER_MAKEOPTS += CONFIG_AP=y CONFIG_MESH=y
  82. endif
  83. ifeq ($(LOCAL_VARIANT),full)
  84. DRIVER_MAKEOPTS += CONFIG_OWE=y CONFIG_SUITEB192=y CONFIG_AP=y CONFIG_MESH=y
  85. endif
  86. endif
  87. ifeq ($(SSL_VARIANT),wolfssl)
  88. DRIVER_MAKEOPTS += CONFIG_TLS=wolfssl CONFIG_SAE=y
  89. TARGET_LDFLAGS += -lwolfssl
  90. ifeq ($(LOCAL_VARIANT),basic)
  91. DRIVER_MAKEOPTS += CONFIG_OWE=y
  92. endif
  93. ifeq ($(LOCAL_VARIANT),mesh)
  94. DRIVER_MAKEOPTS += CONFIG_AP=y CONFIG_MESH=y CONFIG_WPS_NFC=1
  95. endif
  96. ifeq ($(LOCAL_VARIANT),full)
  97. DRIVER_MAKEOPTS += CONFIG_OWE=y CONFIG_SUITEB192=y CONFIG_AP=y CONFIG_MESH=y CONFIG_WPS_NFC=1
  98. endif
  99. endif
  100. ifneq ($(LOCAL_TYPE),hostapd)
  101. ifdef CONFIG_WPA_RFKILL_SUPPORT
  102. DRIVER_MAKEOPTS += NEED_RFKILL=y
  103. endif
  104. endif
  105. ifdef CONFIG_USE_GLIBC
  106. TARGET_LDFLAGS += -lrt
  107. TARGET_LDFLAGS_C += -lrt
  108. endif
  109. DRV_DEPENDS:=+PACKAGE_kmod-cfg80211:libnl-tiny
  110. define Package/hostapd/Default
  111. SECTION:=net
  112. CATEGORY:=Network
  113. SUBMENU:=WirelessAPD
  114. TITLE:=IEEE 802.1x Authenticator
  115. URL:=http://hostap.epitest.fi/
  116. DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
  117. USERID:=network=101:network=101
  118. PROVIDES:=hostapd
  119. CONFLICTS:=$(HOSTAPD_PROVIDERS)
  120. HOSTAPD_PROVIDERS+=$(1)
  121. endef
  122. define Package/hostapd
  123. $(call Package/hostapd/Default,$(1))
  124. TITLE+= (built-in full)
  125. VARIANT:=full-internal
  126. endef
  127. define Package/hostapd/description
  128. This package contains a full featured IEEE 802.1x/WPA/EAP/RADIUS
  129. Authenticator.
  130. endef
  131. define Package/hostapd-openssl
  132. $(call Package/hostapd/Default,$(1))
  133. TITLE+= (OpenSSL full)
  134. VARIANT:=full-openssl
  135. DEPENDS+=+libopenssl
  136. endef
  137. Package/hostapd-openssl/description = $(Package/hostapd/description)
  138. define Package/hostapd-wolfssl
  139. $(call Package/hostapd/Default,$(1))
  140. TITLE+= (wolfSSL full)
  141. VARIANT:=full-wolfssl
  142. DEPENDS+=+libwolfssl
  143. endef
  144. Package/hostapd-wolfssl/description = $(Package/hostapd/description)
  145. define Package/hostapd-basic
  146. $(call Package/hostapd/Default,$(1))
  147. TITLE+= (WPA-PSK, 11r, 11w)
  148. VARIANT:=basic
  149. endef
  150. define Package/hostapd-basic/description
  151. This package contains a basic IEEE 802.1x/WPA Authenticator with WPA-PSK, 802.11r and 802.11w support.
  152. endef
  153. define Package/hostapd-basic-openssl
  154. $(call Package/hostapd/Default,$(1))
  155. TITLE+= (WPA-PSK, 11r and 11w)
  156. VARIANT:=basic-openssl
  157. DEPENDS+=+libopenssl
  158. endef
  159. define Package/hostapd-basic-openssl/description
  160. This package contains a basic IEEE 802.1x/WPA Authenticator with WPA-PSK, 802.11r and 802.11w support.
  161. endef
  162. define Package/hostapd-basic-wolfssl
  163. $(call Package/hostapd/Default,$(1))
  164. TITLE+= (WPA-PSK, 11r and 11w)
  165. VARIANT:=basic-wolfssl
  166. DEPENDS+=+libwolfssl
  167. endef
  168. define Package/hostapd-basic-wolfssl/description
  169. This package contains a basic IEEE 802.1x/WPA Authenticator with WPA-PSK, 802.11r and 802.11w support.
  170. endef
  171. define Package/hostapd-mini
  172. $(call Package/hostapd/Default,$(1))
  173. TITLE+= (WPA-PSK only)
  174. VARIANT:=mini
  175. endef
  176. define Package/hostapd-mini/description
  177. This package contains a minimal IEEE 802.1x/WPA Authenticator (WPA-PSK only).
  178. endef
  179. define Package/wpad/Default
  180. SECTION:=net
  181. CATEGORY:=Network
  182. SUBMENU:=WirelessAPD
  183. TITLE:=IEEE 802.1x Auth/Supplicant
  184. DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
  185. USERID:=network=101:network=101
  186. URL:=http://hostap.epitest.fi/
  187. PROVIDES:=hostapd wpa-supplicant
  188. CONFLICTS:=$(HOSTAPD_PROVIDERS) $(SUPPLICANT_PROVIDERS)
  189. HOSTAPD_PROVIDERS+=$(1)
  190. SUPPLICANT_PROVIDERS+=$(1)
  191. endef
  192. define Package/wpad
  193. $(call Package/wpad/Default,$(1))
  194. TITLE+= (built-in full)
  195. VARIANT:=wpad-full-internal
  196. endef
  197. define Package/wpad/description
  198. This package contains a full featured IEEE 802.1x/WPA/EAP/RADIUS
  199. Authenticator and Supplicant
  200. endef
  201. define Package/wpad-openssl
  202. $(call Package/wpad/Default,$(1))
  203. TITLE+= (OpenSSL full)
  204. VARIANT:=wpad-full-openssl
  205. DEPENDS+=+libopenssl
  206. endef
  207. Package/wpad-openssl/description = $(Package/wpad/description)
  208. define Package/wpad-wolfssl
  209. $(call Package/wpad/Default,$(1))
  210. TITLE+= (wolfSSL full)
  211. VARIANT:=wpad-full-wolfssl
  212. DEPENDS+=+libwolfssl
  213. endef
  214. Package/wpad-wolfssl/description = $(Package/wpad/description)
  215. define Package/wpad-basic
  216. $(call Package/wpad/Default,$(1))
  217. TITLE+= (WPA-PSK, 11r, 11w)
  218. VARIANT:=wpad-basic
  219. endef
  220. define Package/wpad-basic/description
  221. This package contains a basic IEEE 802.1x/WPA Authenticator and Supplicant with WPA-PSK, 802.11r and 802.11w support.
  222. endef
  223. define Package/wpad-basic-openssl
  224. $(call Package/wpad/Default,$(1))
  225. TITLE+= (OpenSSL, 11r, 11w)
  226. VARIANT:=wpad-basic-openssl
  227. DEPENDS+=+libopenssl
  228. endef
  229. define Package/wpad-basic-openssl/description
  230. This package contains a basic IEEE 802.1x/WPA Authenticator and Supplicant with WPA-PSK, SAE (WPA3-Personal), 802.11r and 802.11w support.
  231. endef
  232. define Package/wpad-basic-wolfssl
  233. $(call Package/wpad/Default,$(1))
  234. TITLE+= (wolfSSL, 11r, 11w)
  235. VARIANT:=wpad-basic-wolfssl
  236. DEPENDS+=+libwolfssl
  237. endef
  238. define Package/wpad-basic-wolfssl/description
  239. This package contains a basic IEEE 802.1x/WPA Authenticator and Supplicant with WPA-PSK, SAE (WPA3-Personal), 802.11r and 802.11w support.
  240. endef
  241. define Package/wpad-mini
  242. $(call Package/wpad/Default,$(1))
  243. TITLE+= (WPA-PSK only)
  244. VARIANT:=wpad-mini
  245. endef
  246. define Package/wpad-mini/description
  247. This package contains a minimal IEEE 802.1x/WPA Authenticator and Supplicant (WPA-PSK only).
  248. endef
  249. define Package/wpad-mesh
  250. $(call Package/wpad/Default,$(1))
  251. DEPENDS+=@PACKAGE_kmod-cfg80211 @(!TARGET_uml||BROKEN)
  252. PROVIDES+=wpa-supplicant-mesh wpad-mesh
  253. endef
  254. define Package/wpad-mesh/description
  255. This package contains a minimal IEEE 802.1x/WPA Authenticator and Supplicant (with 802.11s mesh and SAE support).
  256. endef
  257. define Package/wpad-mesh-openssl
  258. $(call Package/wpad-mesh,$(1))
  259. TITLE+= (OpenSSL, 11s, SAE)
  260. DEPENDS+=+libopenssl
  261. VARIANT:=wpad-mesh-openssl
  262. endef
  263. Package/wpad-mesh-openssl/description = $(Package/wpad-mesh/description)
  264. define Package/wpad-mesh-wolfssl
  265. $(call Package/wpad-mesh,$(1))
  266. TITLE+= (wolfSSL, 11s, SAE)
  267. DEPENDS+=+libwolfssl
  268. VARIANT:=wpad-mesh-wolfssl
  269. endef
  270. Package/wpad-mesh-wolfssl/description = $(Package/wpad-mesh/description)
  271. define Package/wpa-supplicant/Default
  272. SECTION:=net
  273. CATEGORY:=Network
  274. SUBMENU:=WirelessAPD
  275. TITLE:=WPA Supplicant
  276. URL:=http://hostap.epitest.fi/wpa_supplicant/
  277. DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
  278. USERID:=network=101:network=101
  279. PROVIDES:=wpa-supplicant
  280. CONFLICTS:=$(SUPPLICANT_PROVIDERS)
  281. SUPPLICANT_PROVIDERS+=$(1)
  282. endef
  283. define Package/wpa-supplicant
  284. $(call Package/wpa-supplicant/Default,$(1))
  285. TITLE+= (built-in full)
  286. VARIANT:=supplicant-full-internal
  287. endef
  288. define Package/wpa-supplicant-openssl
  289. $(call Package/wpa-supplicant/Default,$(1))
  290. TITLE+= (OpenSSL full)
  291. VARIANT:=supplicant-full-openssl
  292. DEPENDS+=+libopenssl
  293. endef
  294. define Package/wpa-supplicant-wolfssl
  295. $(call Package/wpa-supplicant/Default,$(1))
  296. TITLE+= (wolfSSL full)
  297. VARIANT:=supplicant-full-wolfssl
  298. DEPENDS+=+libwolfssl
  299. endef
  300. define Package/wpa-supplicant/config
  301. source "$(SOURCE)/Config.in"
  302. endef
  303. define Package/wpa-supplicant-p2p
  304. $(call Package/wpa-supplicant/Default,$(1))
  305. TITLE+= (Wi-Fi P2P support)
  306. DEPENDS+=@PACKAGE_kmod-cfg80211
  307. VARIANT:=supplicant-p2p-internal
  308. endef
  309. define Package/wpa-supplicant-mesh/Default
  310. $(call Package/wpa-supplicant/Default,$(1))
  311. DEPENDS+=@PACKAGE_kmod-cfg80211 @(!TARGET_uml||BROKEN)
  312. PROVIDES+=wpa-supplicant-mesh
  313. endef
  314. define Package/wpa-supplicant-mesh-openssl
  315. $(call Package/wpa-supplicant-mesh/Default,$(1))
  316. TITLE+= (OpenSSL, 11s, SAE)
  317. VARIANT:=supplicant-mesh-openssl
  318. DEPENDS+=+libopenssl
  319. endef
  320. define Package/wpa-supplicant-mesh-wolfssl
  321. $(call Package/wpa-supplicant-mesh/Default,$(1))
  322. TITLE+= (wolfSSL, 11s, SAE)
  323. VARIANT:=supplicant-mesh-wolfssl
  324. DEPENDS+=+libwolfssl
  325. endef
  326. define Package/wpa-supplicant-basic
  327. $(call Package/wpa-supplicant/Default,$(1))
  328. TITLE+= (11r, 11w)
  329. VARIANT:=supplicant-basic
  330. endef
  331. define Package/wpa-supplicant-mini
  332. $(call Package/wpa-supplicant/Default,$(1))
  333. TITLE+= (minimal)
  334. VARIANT:=supplicant-mini
  335. endef
  336. define Package/hostapd-common
  337. TITLE:=hostapd/wpa_supplicant common support files
  338. SECTION:=net
  339. CATEGORY:=Network
  340. SUBMENU:=WirelessAPD
  341. endef
  342. define Package/hostapd-utils
  343. SECTION:=net
  344. CATEGORY:=Network
  345. SUBMENU:=WirelessAPD
  346. TITLE:=IEEE 802.1x Authenticator (utils)
  347. URL:=http://hostap.epitest.fi/
  348. DEPENDS:=@$(subst $(space),||,$(foreach pkg,$(HOSTAPD_PROVIDERS),PACKAGE_$(pkg)))
  349. endef
  350. define Package/hostapd-utils/description
  351. This package contains a command line utility to control the
  352. IEEE 802.1x/WPA/EAP/RADIUS Authenticator.
  353. endef
  354. define Package/wpa-cli
  355. SECTION:=net
  356. CATEGORY:=Network
  357. SUBMENU:=WirelessAPD
  358. DEPENDS:=@$(subst $(space),||,$(foreach pkg,$(SUPPLICANT_PROVIDERS),PACKAGE_$(pkg)))
  359. TITLE:=WPA Supplicant command line control utility
  360. endef
  361. define Package/eapol-test/Default
  362. TITLE:=802.1x auth test utility
  363. SECTION:=net
  364. SUBMENU:=WirelessAPD
  365. CATEGORY:=Network
  366. DEPENDS:=$(DRV_DEPENDS) +libubus
  367. endef
  368. define Package/eapol-test
  369. $(call Package/eapol-test/Default,$(1))
  370. TITLE+= (built-in full)
  371. VARIANT:=supplicant-full-internal
  372. endef
  373. define Package/eapol-test-openssl
  374. $(call Package/eapol-test/Default,$(1))
  375. TITLE+= (OpenSSL full)
  376. VARIANT:=supplicant-full-openssl
  377. CONFLICTS:=$(filter-out eapol-test-openssl ,$(EAPOL_TEST_PROVIDERS))
  378. DEPENDS+=+libopenssl
  379. PROVIDES:=eapol-test
  380. endef
  381. define Package/eapol-test-wolfssl
  382. $(call Package/eapol-test/Default,$(1))
  383. TITLE+= (wolfSSL full)
  384. VARIANT:=supplicant-full-wolfssl
  385. CONFLICTS:=$(filter-out eapol-test-openssl ,$(filter-out eapol-test-wolfssl ,$(EAPOL_TEST_PROVIDERS)))
  386. DEPENDS+=+libwolfssl
  387. PROVIDES:=eapol-test
  388. endef
  389. ifneq ($(wildcard $(PKG_BUILD_DIR)/.config_*),$(subst .configured_,.config_,$(STAMP_CONFIGURED)))
  390. define Build/Configure/rebuild
  391. $(FIND) $(PKG_BUILD_DIR) -name \*.o -or -name \*.a | $(XARGS) rm -f
  392. rm -f $(PKG_BUILD_DIR)/hostapd/hostapd
  393. rm -f $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant
  394. rm -f $(PKG_BUILD_DIR)/.config_*
  395. touch $(subst .configured_,.config_,$(STAMP_CONFIGURED))
  396. endef
  397. endif
  398. define Build/Configure
  399. $(Build/Configure/rebuild)
  400. $(if $(wildcard ./files/hostapd-$(CONFIG_VARIANT).config), \
  401. $(CP) ./files/hostapd-$(CONFIG_VARIANT).config $(PKG_BUILD_DIR)/hostapd/.config \
  402. )
  403. $(if $(wildcard ./files/wpa_supplicant-$(CONFIG_VARIANT).config), \
  404. $(CP) ./files/wpa_supplicant-$(CONFIG_VARIANT).config $(PKG_BUILD_DIR)/wpa_supplicant/.config
  405. )
  406. endef
  407. TARGET_CPPFLAGS := \
  408. -I$(STAGING_DIR)/usr/include/libnl-tiny \
  409. -I$(PKG_BUILD_DIR)/src/crypto \
  410. $(TARGET_CPPFLAGS) \
  411. -DCONFIG_LIBNL20 \
  412. -D_GNU_SOURCE \
  413. $(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
  414. TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
  415. TARGET_LDFLAGS += -Wl,--gc-sections -flto=jobserver -fuse-linker-plugin -lubox -lubus
  416. ifdef CONFIG_PACKAGE_kmod-cfg80211
  417. TARGET_LDFLAGS += -lm -lnl-tiny
  418. endif
  419. ifdef CONFIG_WPA_ENABLE_WEP
  420. DRIVER_MAKEOPTS += CONFIG_WEP=y
  421. endif
  422. define Build/RunMake
  423. CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
  424. $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/$(1) \
  425. $(TARGET_CONFIGURE_OPTS) \
  426. $(DRIVER_MAKEOPTS) \
  427. LIBS="$(TARGET_LDFLAGS)" \
  428. LIBS_c="$(TARGET_LDFLAGS_C)" \
  429. AR="$(TARGET_CROSS)gcc-ar" \
  430. BCHECK= \
  431. $(if $(findstring s,$(OPENWRT_VERBOSE)),V=1) \
  432. $(2)
  433. endef
  434. define Build/Compile/wpad
  435. echo ` \
  436. $(call Build/RunMake,hostapd,-s MULTICALL=1 dump_cflags); \
  437. $(call Build/RunMake,wpa_supplicant,-s MULTICALL=1 dump_cflags) | \
  438. sed -e 's,-n ,,g' -e 's^$(TARGET_CFLAGS)^^' \
  439. ` > $(PKG_BUILD_DIR)/.cflags
  440. sed -i 's/"/\\"/g' $(PKG_BUILD_DIR)/.cflags
  441. +$(call Build/RunMake,hostapd, \
  442. CFLAGS="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
  443. MULTICALL=1 \
  444. hostapd_cli hostapd_multi.a \
  445. )
  446. +$(call Build/RunMake,wpa_supplicant, \
  447. CFLAGS="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \
  448. MULTICALL=1 \
  449. wpa_cli wpa_supplicant_multi.a \
  450. )
  451. +export MAKEFLAGS="$(MAKE_JOBSERVER)"; $(TARGET_CC) -o $(PKG_BUILD_DIR)/wpad \
  452. $(TARGET_CFLAGS) \
  453. ./files/multicall.c \
  454. $(PKG_BUILD_DIR)/hostapd/hostapd_multi.a \
  455. $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant_multi.a \
  456. $(TARGET_LDFLAGS)
  457. endef
  458. define Build/Compile/hostapd
  459. +$(call Build/RunMake,hostapd, \
  460. hostapd hostapd_cli \
  461. )
  462. endef
  463. define Build/Compile/supplicant
  464. +$(call Build/RunMake,wpa_supplicant, \
  465. wpa_cli wpa_supplicant \
  466. )
  467. endef
  468. define Build/Compile/supplicant-full-internal
  469. +$(call Build/RunMake,wpa_supplicant, \
  470. eapol_test \
  471. )
  472. endef
  473. define Build/Compile/supplicant-full-openssl
  474. +$(call Build/RunMake,wpa_supplicant, \
  475. eapol_test \
  476. )
  477. endef
  478. define Build/Compile/supplicant-full-wolfssl
  479. +$(call Build/RunMake,wpa_supplicant, \
  480. eapol_test \
  481. )
  482. endef
  483. define Build/Compile
  484. $(Build/Compile/$(LOCAL_TYPE))
  485. $(Build/Compile/$(BUILD_VARIANT))
  486. endef
  487. define Install/hostapd
  488. $(INSTALL_DIR) $(1)/usr/sbin
  489. endef
  490. define Install/supplicant
  491. $(INSTALL_DIR) $(1)/usr/sbin
  492. endef
  493. define Package/hostapd-common/install
  494. $(INSTALL_DIR) $(1)/etc/capabilities $(1)/etc/rc.button $(1)/etc/hotplug.d/ieee80211 $(1)/etc/init.d $(1)/lib/netifd $(1)/usr/share/acl.d
  495. $(INSTALL_DATA) ./files/hostapd.sh $(1)/lib/netifd/hostapd.sh
  496. $(INSTALL_BIN) ./files/wpad.init $(1)/etc/init.d/wpad
  497. $(INSTALL_BIN) ./files/wps-hotplug.sh $(1)/etc/rc.button/wps
  498. $(INSTALL_DATA) ./files/wpad_acl.json $(1)/usr/share/acl.d
  499. $(INSTALL_DATA) ./files/wpad.json $(1)/etc/capabilities
  500. endef
  501. define Package/hostapd/install
  502. $(call Install/hostapd,$(1))
  503. $(INSTALL_BIN) $(PKG_BUILD_DIR)/hostapd/hostapd $(1)/usr/sbin/
  504. endef
  505. Package/hostapd-basic/install = $(Package/hostapd/install)
  506. Package/hostapd-basic-openssl/install = $(Package/hostapd/install)
  507. Package/hostapd-basic-wolfssl/install = $(Package/hostapd/install)
  508. Package/hostapd-mini/install = $(Package/hostapd/install)
  509. Package/hostapd-openssl/install = $(Package/hostapd/install)
  510. Package/hostapd-wolfssl/install = $(Package/hostapd/install)
  511. ifneq ($(LOCAL_TYPE),supplicant)
  512. define Package/hostapd-utils/install
  513. $(INSTALL_DIR) $(1)/usr/sbin
  514. $(INSTALL_BIN) $(PKG_BUILD_DIR)/hostapd/hostapd_cli $(1)/usr/sbin/
  515. endef
  516. endif
  517. define Package/wpad/install
  518. $(call Install/hostapd,$(1))
  519. $(call Install/supplicant,$(1))
  520. $(INSTALL_BIN) $(PKG_BUILD_DIR)/wpad $(1)/usr/sbin/
  521. $(LN) wpad $(1)/usr/sbin/hostapd
  522. $(LN) wpad $(1)/usr/sbin/wpa_supplicant
  523. endef
  524. Package/wpad-basic/install = $(Package/wpad/install)
  525. Package/wpad-basic-openssl/install = $(Package/wpad/install)
  526. Package/wpad-basic-wolfssl/install = $(Package/wpad/install)
  527. Package/wpad-mini/install = $(Package/wpad/install)
  528. Package/wpad-openssl/install = $(Package/wpad/install)
  529. Package/wpad-wolfssl/install = $(Package/wpad/install)
  530. Package/wpad-mesh-openssl/install = $(Package/wpad/install)
  531. Package/wpad-mesh-wolfssl/install = $(Package/wpad/install)
  532. define Package/wpa-supplicant/install
  533. $(call Install/supplicant,$(1))
  534. $(INSTALL_BIN) $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant $(1)/usr/sbin/
  535. endef
  536. Package/wpa-supplicant-basic/install = $(Package/wpa-supplicant/install)
  537. Package/wpa-supplicant-mini/install = $(Package/wpa-supplicant/install)
  538. Package/wpa-supplicant-p2p/install = $(Package/wpa-supplicant/install)
  539. Package/wpa-supplicant-openssl/install = $(Package/wpa-supplicant/install)
  540. Package/wpa-supplicant-wolfssl/install = $(Package/wpa-supplicant/install)
  541. Package/wpa-supplicant-mesh-openssl/install = $(Package/wpa-supplicant/install)
  542. Package/wpa-supplicant-mesh-wolfssl/install = $(Package/wpa-supplicant/install)
  543. ifneq ($(LOCAL_TYPE),hostapd)
  544. define Package/wpa-cli/install
  545. $(INSTALL_DIR) $(1)/usr/sbin
  546. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/wpa_cli $(1)/usr/sbin/
  547. endef
  548. endif
  549. ifeq ($(BUILD_VARIANT),supplicant-full-internal)
  550. define Package/eapol-test/install
  551. $(INSTALL_DIR) $(1)/usr/sbin
  552. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/eapol_test $(1)/usr/sbin/
  553. endef
  554. endif
  555. ifeq ($(BUILD_VARIANT),supplicant-full-openssl)
  556. define Package/eapol-test-openssl/install
  557. $(INSTALL_DIR) $(1)/usr/sbin
  558. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/eapol_test $(1)/usr/sbin/
  559. endef
  560. endif
  561. ifeq ($(BUILD_VARIANT),supplicant-full-wolfssl)
  562. define Package/eapol-test-wolfssl/install
  563. $(INSTALL_DIR) $(1)/usr/sbin
  564. $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/eapol_test $(1)/usr/sbin/
  565. endef
  566. endif
  567. # Build hostapd-common before its dependents, to avoid
  568. # spurious rebuilds when building multiple variants.
  569. $(eval $(call BuildPackage,hostapd-common))
  570. $(eval $(call BuildPackage,hostapd))
  571. $(eval $(call BuildPackage,hostapd-basic))
  572. $(eval $(call BuildPackage,hostapd-basic-openssl))
  573. $(eval $(call BuildPackage,hostapd-basic-wolfssl))
  574. $(eval $(call BuildPackage,hostapd-mini))
  575. $(eval $(call BuildPackage,hostapd-openssl))
  576. $(eval $(call BuildPackage,hostapd-wolfssl))
  577. $(eval $(call BuildPackage,wpad))
  578. $(eval $(call BuildPackage,wpad-mesh-openssl))
  579. $(eval $(call BuildPackage,wpad-mesh-wolfssl))
  580. $(eval $(call BuildPackage,wpad-basic))
  581. $(eval $(call BuildPackage,wpad-basic-openssl))
  582. $(eval $(call BuildPackage,wpad-basic-wolfssl))
  583. $(eval $(call BuildPackage,wpad-mini))
  584. $(eval $(call BuildPackage,wpad-openssl))
  585. $(eval $(call BuildPackage,wpad-wolfssl))
  586. $(eval $(call BuildPackage,wpa-supplicant))
  587. $(eval $(call BuildPackage,wpa-supplicant-mesh-openssl))
  588. $(eval $(call BuildPackage,wpa-supplicant-mesh-wolfssl))
  589. $(eval $(call BuildPackage,wpa-supplicant-basic))
  590. $(eval $(call BuildPackage,wpa-supplicant-mini))
  591. $(eval $(call BuildPackage,wpa-supplicant-p2p))
  592. $(eval $(call BuildPackage,wpa-supplicant-openssl))
  593. $(eval $(call BuildPackage,wpa-supplicant-wolfssl))
  594. $(eval $(call BuildPackage,wpa-cli))
  595. $(eval $(call BuildPackage,hostapd-utils))
  596. $(eval $(call BuildPackage,eapol-test))
  597. $(eval $(call BuildPackage,eapol-test-openssl))
  598. $(eval $(call BuildPackage,eapol-test-wolfssl))