diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..02176ec --- /dev/null +++ b/Makefile @@ -0,0 +1,129 @@ +# Install prefix +PREFIX ?= /usr +CRDA_PATH ?= $(PREFIX)/lib/crda +CRDA_KEY_PATH ?= $(CRDA_PATH)/pubkeys +FIRMWARE_PATH ?= /lib/firmware + +MANDIR ?= $(PREFIX)/share/man/ + +SHA1SUM ?= /usr/bin/sha1sum +LSB_RELEASE ?= /usr/bin/lsb_release +WHOAMI ?= /usr/bin/whoami + +# Distro name: Ubuntu, Debian, Fedora, if not present you get +# "custom-distro", if your distribution does not have the LSB stuff, +# then set this variable when calling make if you don't want "custom-distro" +LSB_ID ?= $(shell if [ -f $(LSB_RELEASE) ]; then \ + $(LSB_RELEASE) -i -s; \ + else \ + echo custom-distro; \ + fi) + +DISTRO_PRIVKEY ?= ~/.wireless-regdb-$(LSB_ID).key.priv.pem +DISTRO_PUBKEY ?= ~/.wireless-regdb-$(LSB_ID).key.priv.pem + +REGDB_AUTHOR ?= $(shell if [ -f $(DISTRO_PRIVKEY) ]; then \ + echo $(LSB_ID) ; \ + elif [ -f $(WHOAMI) ]; then \ + $(WHOAMI); \ + else \ + echo custom-user; \ + fi) + +REGDB_PRIVKEY ?= ~/.wireless-regdb-$(REGDB_AUTHOR).key.priv.pem +REGDB_PUBKEY ?= $(REGDB_AUTHOR).key.pub.pem +REGDB_PUBCERT ?= $(REGDB_AUTHOR).x509.pem + +REGDB_UPSTREAM_PUBKEY ?= sforshee.key.pub.pem + +REGDB_CHANGED = $(shell $(SHA1SUM) -c --status sha1sum.txt >/dev/null 2>&1; \ + if [ $$? -ne 0 ]; then \ + echo maintainer-clean $(REGDB_PUBKEY) $(REGDB_PUBCERT); \ + fi) + +.PHONY: all clean mrproper install maintainer-clean install-distro-key + +all: $(REGDB_CHANGED) regulatory.bin sha1sum.txt regulatory.db.p7s + +clean: + @rm -f *.pyc *.gz + +maintainer-clean: clean + @rm -f regulatory.bin regulatory.db regulatory.db.p7s + +mrproper: clean maintainer-clean + @echo Removed public key, regulatory.bin, regulatory.db* and compressed man pages + @rm -f $(REGDB_PUBKEY) $(REGDB_PUBCERT) .custom + +regulatory.bin: db.txt $(REGDB_PRIVKEY) $(REGDB_PUBKEY) + @echo Generating $@ digitally signed by $(REGDB_AUTHOR)... + ./db2bin.py regulatory.bin db.txt $(REGDB_PRIVKEY) + +regulatory.db: db.txt db2fw.py + @echo "Generating $@" + ./db2fw.py regulatory.db db.txt + +regulatory.db.p7s: regulatory.db $(REGDB_PRIVKEY) $(REGDB_PUBCERT) + @echo "Signing regulatory.db (by $(REGDB_AUTHOR))..." + @openssl smime -sign \ + -signer $(REGDB_PUBCERT) \ + -inkey $(REGDB_PRIVKEY) \ + -in $< -nosmimecap -binary \ + -outform DER -out $@ + +sha1sum.txt: db.txt + sha1sum $< > $@ + +$(REGDB_PUBKEY): $(REGDB_PRIVKEY) + @echo "Generating public key for $(REGDB_AUTHOR)..." + openssl rsa -in $(REGDB_PRIVKEY) -out $(REGDB_PUBKEY) -pubout -outform PEM + +$(REGDB_PUBCERT): $(REGDB_PRIVKEY) + @echo "Generating certificate for $(REGDB_AUTHOR)..." + ./gen-pubcert.sh $(REGDB_PRIVKEY) $(REGDB_PUBCERT) $(REGDB_AUTHOR) + @echo $(REGDB_PUBKEY) > .custom + + +$(REGDB_PRIVKEY): + @echo "Generating private key for $(REGDB_AUTHOR)..." + openssl genrsa -out $(REGDB_PRIVKEY) 2048 + +ifneq ($(shell test -e $(DISTRO_PRIVKEY) && echo yes),yes) +$(DISTRO_PRIVKEY): + @echo "Generating private key for $(LSB_ID) packager..." + openssl genrsa -out $(DISTRO_PRIVKEY) 2048 +endif + +install-distro-key: maintainer-clean $(DISTRO_PRIVKEY) + +%.gz: % + gzip < $< > $@ + +# Users should just do: +# sudo make install +# +# Developers should do: +# make maintainer-clean +# make +# sudo make install +# +# Distributions packagers should do only once: +# make install-distro-key +# This will create a private key for you and install it into +# ~/.wireless-regdb-$(LSB_ID).key.priv.pem +# To make new releaes just do: +# make maintainer-clean +# make +# sudo make install +install: regulatory.bin.5.gz regulatory.db.5.gz + install -m 755 -d $(DESTDIR)/$(CRDA_PATH) + install -m 755 -d $(DESTDIR)/$(CRDA_KEY_PATH) + install -m 755 -d $(DESTDIR)/$(FIRMWARE_PATH) + if [ -f .custom ]; then \ + install -m 644 -t $(DESTDIR)/$(CRDA_KEY_PATH)/ $(shell cat .custom); \ + fi + install -m 644 -t $(DESTDIR)/$(CRDA_KEY_PATH)/ $(REGDB_UPSTREAM_PUBKEY) + install -m 644 -t $(DESTDIR)/$(CRDA_PATH)/ regulatory.bin + install -m 644 -t $(DESTDIR)/$(FIRMWARE_PATH) regulatory.db regulatory.db.p7s + install -m 755 -d $(DESTDIR)/$(MANDIR)/man5/ + install -m 644 -t $(DESTDIR)/$(MANDIR)/man5/ regulatory.bin.5.gz regulatory.db.5.gz |