Add a checker for REG_BIN and easy instructions on how to add it
[platform/upstream/crda.git] / Makefile
1 # Modify as you see fit, note this is built into crda,
2 # so if you change it here you will have to change crda.c
3 REG_BIN?=/usr/lib/crda/regulatory.bin
4 REG_GIT?=git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-regdb.git
5
6 # Used locally to retrieve all pubkeys during build time
7 PUBKEY_DIR=pubkeys
8
9 CFLAGS += -Wall -g
10
11 all: $(REG_BIN) crda intersect verify
12
13 ifeq ($(USE_OPENSSL),1)
14 CFLAGS += -DUSE_OPENSSL `pkg-config --cflags openssl`
15 LDLIBS += `pkg-config --libs openssl`
16
17 reglib.o: keys-ssl.c
18
19 else
20 CFLAGS += -DUSE_GCRYPT
21 LDLIBS += -lgcrypt
22
23 reglib.o: keys-gcrypt.c
24
25 endif
26 MKDIR ?= mkdir -p
27 INSTALL ?= install
28
29 NL1FOUND := $(shell pkg-config --atleast-version=1 libnl-1 && echo Y)
30 NL2FOUND := $(shell pkg-config --atleast-version=2 libnl-2.0 && echo Y)
31
32 ifeq ($(NL1FOUND),Y)
33 NLLIBNAME = libnl-1
34 endif
35
36 ifeq ($(NL2FOUND),Y)
37 CFLAGS += -DCONFIG_LIBNL20
38 LIBS += -lnl-genl
39 NLLIBNAME = libnl-2.0
40 endif
41
42 LIBS += `pkg-config --libs $(NLLIBNAME)`
43 CFLAGS += `pkg-config --cflags $(NLLIBNAME)`
44
45 ifeq ($(V),1)
46 Q=
47 NQ=@true
48 else
49 Q=@
50 NQ=@echo
51 endif
52
53 $(REG_BIN):
54         $(NQ) '  EXIST ' $(REG_BIN)
55         $(NQ)
56         $(NQ) ERROR: The file: $(REG_BIN) is missing. You need this in place in order
57         $(NQ) to build CRDA. You can get it from:
58         $(NQ)
59         $(NQ) $(REG_GIT)
60         $(NQ)
61         $(NQ) "Once cloned (no need to build) cp regulatory.bin to $(REG_BIN)"
62         $(NQ)
63         $(Q) exit 1
64
65 keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem)
66         $(NQ) '  GEN ' $@
67         $(Q)./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) > $@
68
69 %.o: %.c regdb.h
70         $(NQ) '  CC  ' $@
71         $(Q)$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
72
73 crda: reglib.o crda.o
74         $(NQ) '  LD  ' $@
75         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) -o $@ $^ $(LDLIBS)
76
77 regdbdump: reglib.o regdbdump.o print-regdom.o
78         $(NQ) '  LD  ' $@
79         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
80
81 intersect: reglib.o intersect.o print-regdom.o
82         $(NQ) '  LD  ' $@
83         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
84
85 verify: $(REG_BIN) regdbdump
86         $(NQ) '  CHK  $(REG_BIN)'
87         $(Q)./regdbdump $(REG_BIN) >/dev/null
88
89 install: crda
90         $(NQ) '  INSTALL  crda'
91         $(Q)$(MKDIR) $(DESTDIR)/sbin
92         $(Q)$(INSTALL) -m 755 -t $(DESTDIR)/sbin/ crda
93         $(NQ) '  INSTALL  regdbdump'
94         $(Q)$(INSTALL) -m 755 -t $(DESTDIR)/sbin/ regdbdump
95         $(NQ) '  INSTALL  regulatory.rules'
96         $(Q)$(MKDIR) $(DESTDIR)/etc/udev/rules.d
97         $(Q)$(INSTALL) -m 644 -t $(DESTDIR)/etc/udev/rules.d/ udev/regulatory.rules
98
99 clean:
100         $(Q)rm -f crda regdbdump intersect *.o *~ *.pyc keys-*.c