aboutsummaryrefslogtreecommitdiffstats
path: root/package/crda/Makefile
blob: 7036dcfd6fd0bdf1f49ed85d5221fc8346e08ea8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#
# Copyright (C) 2009 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=crda
PKG_RELEASE:=2
PKG_VERSION:=1.1.0
PKG_SOURCE_URL:=http://wireless.kernel.org/download/crda
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_MD5SUM:=6004584d2e39e899f7642b141dd72028
PKG_BUILD_DEPENDS:=mac80211

PKG_REGULATORY_NAME:=regulatory
PKG_REGULATORY_VERSION:=2009.11.25
PKG_REGULATORY_SOURCE_URL:=http://wireless.kernel.org/download/wireless-regdb/regulatory.bins
PKG_REGULATORY_SOURCE:=$(PKG_REGULATORY_VERSION)-$(PKG_REGULATORY_NAME).bin
PKG_REGULATORY_MD5SUM:=873b5c55a26c8ba7674e083f51cb10aa

include $(INCLUDE_DIR)/package.mk

define Package/crda
  SECTION:=net
  CATEGORY:=Network
  TITLE:=Central Regulatory Domain Agent (CRDA)
  DEPENDS:=+kmod-mac80211 +libnl-tiny
  URL:=http://wireless.kernel.org/en/developers/Regulatory/CRDA
endef

define Download/wireless-regdb
  FILE:=$(PKG_REGULATORY_SOURCE)
  URL:=$(PKG_REGULATORY_SOURCE_URL)
  VERSION:=$(PKG_REGULATORY_VERSION)
  MD5SUM:=$(PKG_REGULATORY_MD5SUM)
endef
$(eval $(call Download,wireless-regdb))

define Package/crda/description
 This is the Central Regulatory Domain Agent for Linux. It serves one
 purpose: tell Linux kernel what to enforce. In essence it is a udev
 helper for communication between the kernel and userspace. You only
 need to run this manually for debugging purposes. For manual changing
 of regulatory domains use iw (iw reg set) or wpa_supplicant (feature
 yet to be added).
endef

TARGET_CPPFLAGS := \
	-I$(STAGING_DIR)/usr/include/libnl-tiny \
	-D_GNU_SOURCE \
	$(TARGET_CPPFLAGS)

MAKE_FLAGS += \
	NL1FOUND="" NL2FOUND=Y \
	NLLIBNAME="libnl-tiny" \
	NLLIBS="-lnl-tiny -lm" \
	REG_BIN="$(DL_DIR)/$(PKG_REGULATORY_SOURCE)" \
	crda

define Package/crda/install
	$(INSTALL_DIR) $(1)/sbin
	$(INSTALL_DIR) $(1)/etc/hotplug.d
	$(INSTALL_DIR) $(1)/etc/hotplug.d/platform
	$(INSTALL_DIR) $(1)/usr/lib/crda
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/crda $(1)/sbin/
	$(INSTALL_DATA) ./files/hotplug.rule $(1)/etc/hotplug.d/platform/10-regulatory
	$(INSTALL_DATA) $(DL_DIR)/$(PKG_REGULATORY_SOURCE) $(1)/usr/lib/crda/regulatory.bin
endef

$(eval $(call BuildPackage,crda))
pan class="k">)/mklibs-out # first find all programs and add them to the mklibs list find $(STAGING_DIR_ROOT) -type f -perm /100 -exec \ file -r -N -F '' {} + | \ awk ' /executable.*dynamically/ { print $$1 }' > $(TMP_DIR)/mklibs-progs # find all loadable objects that are not regular libraries and add them to the list as well find $(STAGING_DIR_ROOT) -type f -name \*.so\* -exec \ file -r -N -F '' {} + | \ awk ' /shared object/ { print $$1 }' > $(TMP_DIR)/mklibs-libs mkdir -p $(TMP_DIR)/mklibs-out $(STAGING_DIR_HOST)/bin/mklibs -D \ -d $(TMP_DIR)/mklibs-out \ --sysroot $(STAGING_DIR_ROOT) \ `cat $(TMP_DIR)/mklibs-libs | sed 's:/*[^/]\+/*$$::' | uniq | sed 's:^$(STAGING_DIR_ROOT):-L :'` \ --ldlib $(patsubst $(STAGING_DIR_ROOT)/%,/%,$(firstword $(wildcard \ $(foreach name,ld-uClibc.so.* ld-linux.so.* ld-*.so ld-musl-*.so.*, \ $(STAGING_DIR_ROOT)/lib/$(name) \ )))) \ --target $(REAL_GNU_TARGET_NAME) \ `cat $(TMP_DIR)/mklibs-progs $(TMP_DIR)/mklibs-libs` 2>&1 $(RSTRIP) $(TMP_DIR)/mklibs-out for lib in `ls $(TMP_DIR)/mklibs-out/*.so.* 2>/dev/null`; do \ LIB="$${lib##*/}"; \ DEST="`ls "$(TARGET_DIR)/lib/$$LIB" "$(TARGET_DIR)/usr/lib/$$LIB" 2>/dev/null`"; \ [ -n "$$DEST" ] || continue; \ echo "Copying stripped library $$lib to $$DEST"; \ cp "$$lib" "$$DEST" || exit 1; \ done endef endif # where to build (and put) .ipk packages OPKG:= \ IPKG_NO_SCRIPT=1 \ IPKG_TMP=$(TMP_DIR)/ipkg \ IPKG_INSTROOT=$(TARGET_DIR) \ IPKG_CONF_DIR=$(STAGING_DIR)/etc \ IPKG_OFFLINE_ROOT=$(TARGET_DIR) \ $(XARGS) $(STAGING_DIR_HOST)/bin/opkg \ --offline-root $(TARGET_DIR) \ --force-depends \ --force-overwrite \ --force-postinstall \ --force-maintainer \ --add-dest root:/ \ --add-arch all:100 \ --add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200 PACKAGE_INSTALL_FILES:= \ $(foreach pkg,$(sort $(package-y)), \ $(foreach variant, \ $(if $(strip $(package/$(pkg)/variants)), \ $(package/$(pkg)/variants), \ $(if $(package/$(pkg)/default-variant), \ $(package/$(pkg)/default-variant), \ default \ ) \ ), \ $(PKG_INFO_DIR)/$(lastword $(subst /,$(space),$(pkg))).$(variant).install \ ) \ ) $(curdir)/cleanup: $(TMP_DIR)/.build rm -rf $(STAGING_DIR_ROOT) $(curdir)/install: $(TMP_DIR)/.build - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755 rm -rf $(TARGET_DIR) [ -d $(TARGET_DIR)/tmp ] || mkdir -p $(TARGET_DIR)/tmp @$(FIND) `sed -e 's|.*|$(PACKAGE_DIR)$(if $(CONFIG_PER_FEED_REPO),/*)/&_*.ipk|' $(PACKAGE_INSTALL_FILES)` | sort -u | $(OPKG) install @for file in $(PACKAGE_INSTALL_FILES); do \ [ -s $$file.flags ] || continue; \ for flag in `cat $$file.flags`; do \ $(OPKG) flag $$flag < $$file; \ done; \ done || true @-$(MAKE) package/preconfig @if [ -d $(TOPDIR)/files ]; then \ $(call file_copy,$(TOPDIR)/files/.,$(TARGET_DIR)); \ fi @mkdir -p $(TARGET_DIR)/etc/rc.d @( \ cd $(TARGET_DIR); \ for script in ./usr/lib/opkg/info/*.postinst; do \ IPKG_INSTROOT=$(TARGET_DIR) $$(which bash) $$script; \ done; \ for script in ./etc/init.d/*; do \ grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \ IPKG_INSTROOT=$(TARGET_DIR) $$(which bash) ./etc/rc.common $$script enable; \ done || true \ ) @-find $(TARGET_DIR) -name CVS | $(XARGS) rm -rf @-find $(TARGET_DIR) -name .svn | $(XARGS) rm -rf @-find $(TARGET_DIR) -name '.#*' | $(XARGS) rm -f rm -f $(TARGET_DIR)/usr/lib/opkg/info/*.postinst* rm -f $(TARGET_DIR)/usr/lib/opkg/info/*.prerm* $(if $(CONFIG_CLEAN_IPKG),rm -rf $(TARGET_DIR)/usr/lib/opkg) $(call mklibs) PASSOPT="" PASSARG="" ifndef CONFIG_OPKGSMIME_PASSPHRASE ifneq ($(call qstrip,$(CONFIG_OPKGSMIME_PASSFILE)),) PASSOPT="-passin" PASSARG="file:$(call qstrip,$(CONFIG_OPKGSMIME_PASSFILE))" endif endif PACKAGE_SUBDIRS=. ifneq ($(CONFIG_PER_FEED_REPO),) ifneq ($(CONFIG_PER_FEED_REPO_ADD_DISABLED),) PACKAGE_SUBDIRS=base $(FEEDS_AVAILABLE) else PACKAGE_SUBDIRS=base $(FEEDS_ENABLED) endif endif $(curdir)/index: FORCE @echo Generating package index... @for d in $(PACKAGE_SUBDIRS); do ( \ mkdir -p $(PACKAGE_DIR)/$$d; \ cd $(PACKAGE_DIR)/$$d || continue; \ $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages && \ gzip -9nc Packages > Packages.gz; \ ); done ifdef CONFIG_SIGNED_PACKAGES @echo Signing package index... @for d in $(PACKAGE_SUBDIRS); do ( \ [ -d $(PACKAGE_DIR)/$$d ] && \ cd $(PACKAGE_DIR)/$$d || continue; \ $(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY); \ ); done else ifeq ($(call qstrip,$(CONFIG_OPKGSMIME_KEY)),) @echo Signing key has not been configured else ifeq ($(call qstrip,$(CONFIG_OPKGSMIME_CERT)),) @echo Certificate has not been configured else @echo Signing package index... @for d in $(PACKAGE_SUBDIRS); do ( \ [ -d $(PACKAGE_DIR)/$$d ] && \ cd $(PACKAGE_DIR)/$$d || continue; \ openssl smime -binary -in Packages.gz \ -out Packages.sig -outform PEM -sign \ -signer $(CONFIG_OPKGSMIME_CERT) \ -inkey $(CONFIG_OPKGSMIME_KEY) \ $(PASSOPT) $(PASSARG); \ ); done endif endif endif $(curdir)/preconfig: $(curdir)/flags-install:= -j1 $(eval $(call stampfile,$(curdir),package,prereq,.config)) $(eval $(call stampfile,$(curdir),package,cleanup,$(TMP_DIR)/.build)) $(eval $(call stampfile,$(curdir),package,compile,$(TMP_DIR)/.build)) $(eval $(call stampfile,$(curdir),package,install,$(TMP_DIR)/.build)) $(eval $(call subdir,$(curdir)))