Adds a crda man page, update Makefile for distributions
[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 # Use a custom CRDA_UDEV_LEVEL when callling make install to
7 # change your desired level for the udev regulatory.rules
8 CRDA_UDEV_LEVEL?=85
9 UDEV_LEVEL=$(CRDA_UDEV_LEVEL)-
10 # You can customize this if your distributions uses
11 # a different location.
12 UDEV_RULE_DIR?=/lib/udev/rules.d/
13
14 # Used locally to retrieve all pubkeys during build time
15 PUBKEY_DIR=pubkeys
16
17 CFLAGS += -Wall -g
18
19 all: $(REG_BIN) crda intersect verify
20
21 ifeq ($(USE_OPENSSL),1)
22 CFLAGS += -DUSE_OPENSSL `pkg-config --cflags openssl`
23 LDLIBS += `pkg-config --libs openssl`
24
25 reglib.o: keys-ssl.c
26
27 else
28 CFLAGS += -DUSE_GCRYPT
29 LDLIBS += -lgcrypt
30
31 reglib.o: keys-gcrypt.c
32
33 endif
34 MKDIR ?= mkdir -p
35 INSTALL ?= install
36
37 NL1FOUND := $(shell pkg-config --atleast-version=1 libnl-1 && echo Y)
38 NL2FOUND := $(shell pkg-config --atleast-version=2 libnl-2.0 && echo Y)
39
40 ifeq ($(NL1FOUND),Y)
41 NLLIBNAME = libnl-1
42 endif
43
44 ifeq ($(NL2FOUND),Y)
45 CFLAGS += -DCONFIG_LIBNL20
46 LIBS += -lnl-genl
47 NLLIBNAME = libnl-2.0
48 endif
49
50 LIBS += `pkg-config --libs $(NLLIBNAME)`
51 CFLAGS += `pkg-config --cflags $(NLLIBNAME)`
52
53 ifeq ($(V),1)
54 Q=
55 NQ=@true
56 else
57 Q=@
58 NQ=@echo
59 endif
60
61 $(REG_BIN):
62         $(NQ) '  EXIST ' $(REG_BIN)
63         $(NQ)
64         $(NQ) ERROR: The file: $(REG_BIN) is missing. You need this in place in order
65         $(NQ) to build CRDA. You can get it from:
66         $(NQ)
67         $(NQ) $(REG_GIT)
68         $(NQ)
69         $(NQ) "Once cloned (no need to build) cp regulatory.bin to $(REG_BIN)"
70         $(NQ)
71         $(Q) exit 1
72
73 keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem)
74         $(NQ) '  GEN ' $@
75         $(Q)./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@
76
77 %.o: %.c regdb.h
78         $(NQ) '  CC  ' $@
79         $(Q)$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
80
81 crda: reglib.o crda.o
82         $(NQ) '  LD  ' $@
83         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) -o $@ $^ $(LDLIBS)
84
85 regdbdump: reglib.o regdbdump.o print-regdom.o
86         $(NQ) '  LD  ' $@
87         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
88
89 intersect: reglib.o intersect.o print-regdom.o
90         $(NQ) '  LD  ' $@
91         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
92
93 verify: $(REG_BIN) regdbdump
94         $(NQ) '  CHK  $(REG_BIN)'
95         $(Q)./regdbdump $(REG_BIN) >/dev/null
96
97 install: crda
98         $(NQ) '  INSTALL  crda'
99         $(Q)$(MKDIR) $(DESTDIR)/sbin
100         $(Q)$(INSTALL) -m 755 -t $(DESTDIR)/sbin/ crda
101         $(NQ) '  INSTALL  regdbdump'
102         $(Q)$(INSTALL) -m 755 -t $(DESTDIR)/sbin/ regdbdump
103         $(NQ) '  INSTALL  regulatory.rules'
104         $(Q)$(MKDIR) $(DESTDIR)/etc/udev/rules.d
105         @# This removes the old rule you may have, we were not
106         @# putting it in the right place.
107         $(Q)rm -f $(DESTDIR)/etc/udev/rules.d/regulatory.rules
108         $(Q)$(INSTALL) -m 644 -t \
109                 $(DESTDIR)/$(UDEV_RULE_DIR)/$(UDEV_LEVEL)regulatory.rules  \
110                 udev/regulatory.rules
111
112 clean:
113         $(Q)rm -f crda regdbdump intersect *.o *~ *.pyc keys-*.c