5 kx # Modify as you see fit, note this is built into crda,
5 kx # so if you change it here you will have to change crda.c
5 kx REG_BIN?=/usr/lib/crda/regulatory.bin
5 kx REG_GIT?=git://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git
5 kx
5 kx BUILD_REG_DB_DUMP ?= ./regdbdump
5 kx DATA_FORMAT ?= le32
5 kx
5 kx PREFIX ?= /usr/
5 kx MANDIR ?= $(PREFIX)/share/man/
5 kx INCLUDE_DIR ?= $(PREFIX)/include/reglib/
5 kx LIBDIR ?= $(PREFIX)/lib
5 kx
5 kx SBINDIR ?= /sbin/
5 kx
5 kx # Use a custom CRDA_UDEV_LEVEL when callling make install to
5 kx # change your desired level for the udev regulatory.rules
5 kx CRDA_UDEV_LEVEL?=85
5 kx UDEV_LEVEL=$(CRDA_UDEV_LEVEL)-
5 kx # You can customize this if your distributions uses
5 kx # a different location.
5 kx UDEV_RULE_DIR?=/lib/udev/rules.d/
5 kx
5 kx # If your distribution requires a custom pubkeys dir
5 kx # you must update this variable to reflect where the
5 kx # keys are put when building. For example you can run
5 kx # with make PUBKEY_DIR=/usr/lib/crda/pubkeys
5 kx PUBKEY_DIR?=pubkeys
5 kx RUNTIME_PUBKEY_DIR?=/etc/wireless-regdb/pubkeys
5 kx
5 kx CFLAGS += -O2 -fpic
5 kx CFLAGS += -std=gnu99 -Wall -Werror -pedantic
5 kx CFLAGS += -Wall -g
5 kx LDLIBREG += -lreg
5 kx LDLIBS += $(LDLIBREG)
5 kx LDLIBS += -lm
5 kx LIBREG += libreg.so
5 kx LDFLAGS += -L ./
5 kx LIBREG_LDFLAGS += -lm
5 kx
5 kx all: all_noverify verify
5 kx
5 kx all_noverify: $(LIBREG) crda intersect regdbdump db2rd optimize
5 kx
5 kx ifeq ($(USE_OPENSSL),1)
5 kx CFLAGS += -DUSE_OPENSSL -DPUBKEY_DIR=\"$(RUNTIME_PUBKEY_DIR)\" `pkg-config --cflags openssl`
5 kx LDCRYPTOLIBS += `pkg-config --libs openssl`
5 kx
5 kx $(LIBREG): | keys-ssl.c
5 kx
5 kx else
5 kx CFLAGS += -DUSE_GCRYPT
5 kx LDCRYPTOLIBS += -lgcrypt
5 kx
5 kx $(LIBREG): | keys-gcrypt.c
5 kx
5 kx endif
5 kx LDLIBS += $(LDCRYPTOLIBS)
5 kx LIBREG_LDFLAGS += $(LDCRYPTOLIBS)
5 kx MKDIR ?= mkdir -p
5 kx INSTALL ?= install
5 kx
5 kx NL1FOUND := $(shell pkg-config --atleast-version=1 libnl-1 && echo Y)
5 kx NL2FOUND := $(shell pkg-config --atleast-version=2 libnl-2.0 && echo Y)
5 kx NL3FOUND := $(shell pkg-config --atleast-version=3 libnl-3.0 && echo Y)
5 kx NL32FOUND := $(shell pkg-config --atleast-version=3 libnl-3.2 && echo Y)
5 kx
5 kx ifeq ($(NL32FOUND),Y)
5 kx CFLAGS += -DCONFIG_LIBNL30
5 kx NLLIBS += $(shell pkg-config --libs libnl-genl-3.2)
5 kx NLLIBNAME = libnl-3.2
5 kx else
5 kx ifeq ($(NL3FOUND),Y)
5 kx CFLAGS += -DCONFIG_LIBNL30
5 kx NLLIBS += $(shell pkg-config --libs libnl-genl-3.0)
5 kx NLLIBNAME = libnl-3.0
5 kx else
5 kx ifeq ($(NL2FOUND),Y)
5 kx CFLAGS += -DCONFIG_LIBNL20
5 kx NLLIBS += -lnl-genl
5 kx NLLIBNAME = libnl-2.0
5 kx else
5 kx ifeq ($(NL1FOUND),Y)
5 kx NLLIBNAME = libnl-1
5 kx endif
5 kx endif
5 kx endif
5 kx endif
5 kx
5 kx ifeq ($(NLLIBNAME),)
5 kx $(error Cannot find development files for any supported version of libnl)
5 kx endif
5 kx
5 kx NLLIBS += `pkg-config --libs $(NLLIBNAME)`
5 kx CFLAGS += `pkg-config --cflags $(NLLIBNAME)`
5 kx
5 kx ifeq ($(V),1)
5 kx Q=
5 kx NQ=@true
5 kx else
5 kx Q=@
5 kx NQ=@echo
5 kx endif
5 kx
5 kx $(REG_BIN):
5 kx $(NQ) ' EXIST ' $(REG_BIN)
5 kx $(NQ)
5 kx $(NQ) ERROR: The file: $(REG_BIN) is missing. You need this in place in order
5 kx $(NQ) to verify CRDA. You can get it from:
5 kx $(NQ)
5 kx $(NQ) $(REG_GIT)
5 kx $(NQ)
5 kx $(NQ) "Once cloned (no need to build) cp regulatory.bin to $(REG_BIN)"
5 kx $(NQ) "Use \"make noverify\" to disable verification"
5 kx $(NQ)
5 kx $(Q) exit 1
5 kx
5 kx keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem)
5 kx $(NQ) ' GEN ' $@
5 kx $(NQ) ' Trusted pubkeys:' $(wildcard $(PUBKEY_DIR)/*.pem)
5 kx ifneq ($(USE_OPENSSL),1)
5 kx $(Q)$(PYTHON) ./utils/key2pub.py --$* --$(DATA_FORMAT) $(wildcard $(PUBKEY_DIR)/*.pem) $@
5 kx else
5 kx $(Q)$(PYTHON) ./utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem) $@
5 kx endif
5 kx
5 kx $(LIBREG): regdb.h reglib.h reglib.c
5 kx $(NQ) ' CC ' $@
5 kx $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -shared -Wl,-soname,$(LIBREG) $^ $(LIBREG_LDFLAGS)
5 kx
5 kx install-libreg-headers:
5 kx $(NQ) ' INSTALL libreg-headers'
5 kx $(Q)mkdir -p $(DESTDIR)/$(INCLUDE_DIR)
5 kx $(Q)cp *.h $(DESTDIR)/$(INCLUDE_DIR)/
5 kx
5 kx install-libreg:
5 kx $(NQ) ' INSTALL libreg'
5 kx $(Q)mkdir -p $(DESTDIR)/$(LIBDIR)
5 kx $(Q)cp $(LIBREG) $(DESTDIR)/$(LIBDIR)/
5 kx
5 kx %.o: %.c regdb.h $(LIBREG)
5 kx $(NQ) ' CC ' $@
5 kx $(Q)$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
5 kx
5 kx crda: crda.o
5 kx $(NQ) ' LD ' $@
5 kx $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) $(NLLIBS)
5 kx
5 kx regdbdump: regdbdump.o
5 kx $(NQ) ' LD ' $@
5 kx $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
5 kx
5 kx intersect: intersect.o
5 kx $(NQ) ' LD ' $@
5 kx $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
5 kx
5 kx db2rd: db2rd.o
5 kx $(NQ) ' LD ' $@
5 kx $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
5 kx
5 kx optimize: optimize.o
5 kx $(NQ) ' LD ' $@
5 kx $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
5 kx
5 kx verify: $(REG_BIN) regdbdump
5 kx $(NQ) ' CHK $(REG_BIN)'
5 kx ifeq ($(BUILD_REG_DB_DUMP),./regdbdump)
5 kx $(Q)\
5 kx LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) \
5 kx ./regdbdump $(REG_BIN) >/dev/null
5 kx else
5 kx $(BUILD_REG_DB_DUMP) $(REG_BIN) >/dev/null
5 kx endif
5 kx
5 kx %.gz: %
5 kx @$(NQ) ' GZIP' $<
5 kx $(Q)gzip < $< > $@
5 kx
5 kx install: install-libreg install-libreg-headers crda crda.8.gz regdbdump.8.gz
5 kx $(NQ) ' INSTALL crda'
5 kx $(Q)$(MKDIR) $(DESTDIR)/$(SBINDIR)
5 kx $(Q)$(INSTALL) -m 755 -t $(DESTDIR)/$(SBINDIR) crda
5 kx $(NQ) ' INSTALL regdbdump'
5 kx $(Q)$(INSTALL) -m 755 -t $(DESTDIR)/$(SBINDIR) regdbdump
5 kx $(NQ) ' INSTALL $(UDEV_LEVEL)regulatory.rules'
5 kx $(Q)$(MKDIR) $(DESTDIR)/$(UDEV_RULE_DIR)/
5 kx @# This removes the old rule you may have, we were not
5 kx @# putting it in the right place.
5 kx $(Q)rm -f $(DESTDIR)/etc/udev/rules.d/regulatory.rules
5 kx $(Q)sed 's:$$(SBINDIR):$(SBINDIR):' udev/regulatory.rules > udev/regulatory.rules.parsed
5 kx $(Q)ln -sf regulatory.rules.parsed udev/$(UDEV_LEVEL)regulatory.rules
5 kx $(Q)$(INSTALL) -m 644 -t \
5 kx $(DESTDIR)/$(UDEV_RULE_DIR)/ \
5 kx udev/$(UDEV_LEVEL)regulatory.rules
5 kx $(NQ) ' INSTALL crda.8.gz'
5 kx $(Q)$(MKDIR) $(DESTDIR)$(MANDIR)/man8/
5 kx $(Q)$(INSTALL) -m 644 -t $(DESTDIR)/$(MANDIR)/man8/ crda.8.gz
5 kx $(NQ) ' INSTALL regdbdump.8.gz'
5 kx $(Q)$(INSTALL) -m 644 -t $(DESTDIR)/$(MANDIR)/man8/ regdbdump.8.gz
5 kx
5 kx clean:
5 kx $(Q)rm -f $(LIBREG) crda regdbdump intersect db2rd optimize \
5 kx *.o *~ *.pyc keys-*.c *.gz \
5 kx udev/$(UDEV_LEVEL)regulatory.rules udev/regulatory.rules.parsed