]> git.ipfire.org Git - thirdparty/iw.git/blob - Makefile
update nl80211.h
[thirdparty/iw.git] / Makefile
1 MAKEFLAGS += --no-print-directory
2
3 PREFIX ?= /usr
4 SBINDIR ?= $(PREFIX)/sbin
5 MANDIR ?= $(PREFIX)/share/man
6 PKG_CONFIG ?= pkg-config
7
8 MKDIR ?= mkdir -p
9 INSTALL ?= install
10 CC ?= "gcc"
11
12 cc-option = $(shell set -e ; $(CC) $(1) -c -x c /dev/null -o /dev/null >/dev/null 2>&1 && echo '$(1)')
13
14 CFLAGS_EVAL := $(call cc-option,-Wstringop-overflow=4)
15
16 CFLAGS ?= -O2 -g
17 CFLAGS += -Wall -Wextra -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common \
18 -Werror-implicit-function-declaration -Wsign-compare -Wno-unused-parameter \
19 $(CFLAGS_EVAL)
20
21 OBJS = iw.o genl.o event.o info.o phy.o \
22 interface.o ibss.o station.o survey.o util.o ocb.o \
23 mesh.o mpath.o mpp.o scan.o reg.o version.o \
24 reason.o status.o connect.o link.o offch.o ps.o cqm.o \
25 bitrate.o wowlan.o coalesce.o roc.o p2p.o vendor.o mgmt.o \
26 ap.o sha256.o nan.o bloom.o \
27 measurements.o ftm.o
28 OBJS += sections.o
29
30 OBJS-$(HWSIM) += hwsim.o
31
32 OBJS += $(OBJS-y) $(OBJS-Y)
33
34 ALL = iw
35
36 ifeq ($(NO_PKG_CONFIG),)
37 NL3xFOUND := $(shell $(PKG_CONFIG) --atleast-version=3.2 libnl-3.0 && echo Y)
38 ifneq ($(NL3xFOUND),Y)
39 NL31FOUND := $(shell $(PKG_CONFIG) --exact-version=3.1 libnl-3.1 && echo Y)
40 ifneq ($(NL31FOUND),Y)
41 NL3FOUND := $(shell $(PKG_CONFIG) --atleast-version=3 libnl-3.0 && echo Y)
42 ifneq ($(NL3FOUND),Y)
43 NL2FOUND := $(shell $(PKG_CONFIG) --atleast-version=2 libnl-2.0 && echo Y)
44 ifneq ($(NL2FOUND),Y)
45 NL1FOUND := $(shell $(PKG_CONFIG) --atleast-version=1 libnl-1 && echo Y)
46 endif
47 endif
48 endif
49 endif
50
51 ifeq ($(NL1FOUND),Y)
52 NLLIBNAME = libnl-1
53 endif
54
55 ifeq ($(NL2FOUND),Y)
56 CFLAGS += -DCONFIG_LIBNL20
57 LIBS += -lnl-genl
58 NLLIBNAME = libnl-2.0
59 endif
60
61 ifeq ($(NL3xFOUND),Y)
62 # libnl 3.2 might be found as 3.2 and 3.0
63 NL3FOUND = N
64 CFLAGS += -DCONFIG_LIBNL30
65 LIBS += -lnl-genl-3
66 NLLIBNAME = libnl-3.0
67 endif
68
69 ifeq ($(NL3FOUND),Y)
70 CFLAGS += -DCONFIG_LIBNL30
71 LIBS += -lnl-genl
72 NLLIBNAME = libnl-3.0
73 endif
74
75 # nl-3.1 has a broken libnl-gnl-3.1.pc file
76 # as show by pkg-config --debug --libs --cflags --exact-version=3.1 libnl-genl-3.1;echo $?
77 ifeq ($(NL31FOUND),Y)
78 CFLAGS += -DCONFIG_LIBNL30
79 LIBS += -lnl-genl
80 NLLIBNAME = libnl-3.1
81 endif
82
83 ifeq ($(NLLIBNAME),)
84 $(error Cannot find development files for any supported version of libnl)
85 endif
86
87 LIBS += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
88 CFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
89 endif # NO_PKG_CONFIG
90
91 ifeq ($(V),1)
92 Q=
93 NQ=true
94 else
95 Q=@
96 NQ=echo
97 endif
98
99 all: $(ALL)
100
101 VERSION_OBJS := $(filter-out version.o, $(OBJS))
102
103 version.c: version.sh $(patsubst %.o,%.c,$(VERSION_OBJS)) nl80211.h iw.h Makefile \
104 $(wildcard .git/index .git/refs/tags)
105 @$(NQ) ' GEN ' $@
106 $(Q)./version.sh $@
107
108 %.o: %.c iw.h nl80211.h
109 @$(NQ) ' CC ' $@
110 $(Q)$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
111
112 ifeq ($(IW_ANDROID_BUILD),)
113 iw: $(OBJS)
114 @$(NQ) ' CC ' iw
115 $(Q)$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o iw
116 endif
117
118 check:
119 $(Q)$(MAKE) all CC="REAL_CC=$(CC) CHECK=\"sparse -Wall\" cgcc"
120
121 %.gz: %
122 @$(NQ) ' GZIP' $<
123 $(Q)gzip < $< > $@
124
125 install: iw iw.8.gz
126 @$(NQ) ' INST iw'
127 $(Q)$(MKDIR) $(DESTDIR)$(SBINDIR)
128 $(Q)$(INSTALL) -m 755 iw $(DESTDIR)$(SBINDIR)
129 @$(NQ) ' INST iw.8'
130 $(Q)$(MKDIR) $(DESTDIR)$(MANDIR)/man8/
131 $(Q)$(INSTALL) -m 644 iw.8.gz $(DESTDIR)$(MANDIR)/man8/
132
133 clean:
134 $(Q)rm -f iw *.o *~ *.gz version.c *-stamp