b93b735968db3b281de8b540efa3607ac09c1ff0
[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 PREFIX ?= /usr/
7 MANDIR ?= $(PREFIX)/share/man/
8
9 SBINDIR ?= /sbin/
10
11 # Use a custom CRDA_UDEV_LEVEL when callling make install to
12 # change your desired level for the udev regulatory.rules
13 CRDA_UDEV_LEVEL?=85
14 UDEV_LEVEL=$(CRDA_UDEV_LEVEL)-
15 # You can customize this if your distributions uses
16 # a different location.
17 UDEV_RULE_DIR?=/lib/udev/rules.d/
18
19 # If your distribution requires a custom pubkeys dir
20 # you must update this variable to reflect where the
21 # keys are put when building. For example you can run
22 # with make PUBKEY_DIR=/usr/lib/crda/pubkeys
23 PUBKEY_DIR?=pubkeys
24
25 CFLAGS += -Wall -g
26
27 all: $(REG_BIN) crda intersect verify
28
29 ifeq ($(USE_OPENSSL),1)
30 CFLAGS += -DUSE_OPENSSL `pkg-config --cflags openssl`
31 LDLIBS += `pkg-config --libs openssl`
32
33 reglib.o: keys-ssl.c
34
35 else
36 CFLAGS += -DUSE_GCRYPT
37 LDLIBS += -lgcrypt
38
39 reglib.o: keys-gcrypt.c
40
41 endif
42 MKDIR ?= mkdir -p
43 INSTALL ?= install
44
45 NL1FOUND := $(shell pkg-config --atleast-version=1 libnl-1 && echo Y)
46 NL2FOUND := $(shell pkg-config --atleast-version=2 libnl-2.0 && echo Y)
47
48 ifeq ($(NL1FOUND),Y)
49 NLLIBNAME = libnl-1
50 endif
51
52 ifeq ($(NL2FOUND),Y)
53 CFLAGS += -DCONFIG_LIBNL20
54 NLLIBS += -lnl-genl
55 NLLIBNAME = libnl-2.0
56 endif
57
58 ifeq ($(NLLIBNAME),)
59 $(error Cannot find development files for any supported version of libnl)
60 endif
61
62 NLLIBS += `pkg-config --libs $(NLLIBNAME)`
63 CFLAGS += `pkg-config --cflags $(NLLIBNAME)`
64
65 ifeq ($(V),1)
66 Q=
67 NQ=@true
68 else
69 Q=@
70 NQ=@echo
71 endif
72
73 $(REG_BIN):
74         $(NQ) '  EXIST ' $(REG_BIN)
75         $(NQ)
76         $(NQ) ERROR: The file: $(REG_BIN) is missing. You need this in place in order
77         $(NQ) to build CRDA. You can get it from:
78         $(NQ)
79         $(NQ) $(REG_GIT)
80         $(NQ)
81         $(NQ) "Once cloned (no need to build) cp regulatory.bin to $(REG_BIN)"
82         $(NQ)
83         $(Q) exit 1
84
85 keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem)
86         $(NQ) '  GEN ' $@
87         $(NQ) '  Trusted pubkeys:' $(wildcard $(PUBKEY_DIR)/*.pem)
88         $(Q)./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@
89
90 %.o: %.c regdb.h
91         $(NQ) '  CC  ' $@
92         $(Q)$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
93
94 crda: reglib.o crda.o
95         $(NQ) '  LD  ' $@
96         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) $(NLLIBS)
97
98 regdbdump: reglib.o regdbdump.o print-regdom.o
99         $(NQ) '  LD  ' $@
100         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
101
102 intersect: reglib.o intersect.o print-regdom.o
103         $(NQ) '  LD  ' $@
104         $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
105
106 verify: $(REG_BIN) regdbdump
107         $(NQ) '  CHK  $(REG_BIN)'
108         $(Q)./regdbdump $(REG_BIN) >/dev/null
109
110 %.gz: %
111         @$(NQ) ' GZIP' $<
112         $(Q)gzip < $< > $@
113
114 install: crda crda.8.gz regdbdump.8.gz
115         $(NQ) '  INSTALL  crda'
116         $(Q)$(MKDIR) $(DESTDIR)/$(SBINDIR)
117         $(Q)$(INSTALL) -m 755 -t $(DESTDIR)/$(SBINDIR) crda
118         $(NQ) '  INSTALL  regdbdump'
119         $(Q)$(INSTALL) -m 755 -t $(DESTDIR)/$(SBINDIR) regdbdump
120         $(NQ) '  INSTALL  $(UDEV_LEVEL)regulatory.rules'
121         $(Q)$(MKDIR) $(DESTDIR)/$(UDEV_RULE_DIR)/
122         @# This removes the old rule you may have, we were not
123         @# putting it in the right place.
124         $(Q)rm -f $(DESTDIR)/etc/udev/rules.d/regulatory.rules
125         $(Q)sed 's:$$(SBINDIR):$(SBINDIR):' udev/regulatory.rules > udev/regulatory.rules.parsed
126         $(Q)ln -sf regulatory.rules.parsed udev/$(UDEV_LEVEL)regulatory.rules
127         $(Q)$(INSTALL) -m 644 -t \
128                 $(DESTDIR)/$(UDEV_RULE_DIR)/ \
129                 udev/$(UDEV_LEVEL)regulatory.rules
130         $(NQ) '  INSTALL  crda.8.gz'
131         $(Q)$(MKDIR) $(DESTDIR)$(MANDIR)/man8/
132         $(Q)$(INSTALL) -m 644 -t $(DESTDIR)/$(MANDIR)/man8/ crda.8.gz
133         $(NQ) '  INSTALL  regdbdump.8.gz'
134         $(Q)$(INSTALL) -m 644 -t $(DESTDIR)/$(MANDIR)/man8/ regdbdump.8.gz
135
136 clean:
137         $(Q)rm -f crda regdbdump intersect *.o *~ *.pyc keys-*.c *.gz \
138         udev/$(UDEV_LEVEL)regulatory.rules udev/regulatory.rules.parsed