130 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| # 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)
 | |
| 	@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
 | 
