xref: /openwifi/user_space/sdrctl_src/Makefile (revision 2ee67178825ee52f380c2f72b7135d15ddadca60)
1*2ee67178SXianjun JiaoMAKEFLAGS += --no-print-directory
2*2ee67178SXianjun Jiao
3*2ee67178SXianjun JiaoPREFIX ?= /usr
4*2ee67178SXianjun JiaoSBINDIR ?= $(PREFIX)/sbin
5*2ee67178SXianjun JiaoMANDIR ?= $(PREFIX)/share/man
6*2ee67178SXianjun JiaoPKG_CONFIG ?= pkg-config
7*2ee67178SXianjun Jiao
8*2ee67178SXianjun JiaoMKDIR ?= mkdir -p
9*2ee67178SXianjun JiaoINSTALL ?= install
10*2ee67178SXianjun JiaoCC ?= "gcc"
11*2ee67178SXianjun Jiao
12*2ee67178SXianjun JiaoCFLAGS ?= -O2 -g
13*2ee67178SXianjun JiaoCFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration
14*2ee67178SXianjun Jiao
15*2ee67178SXianjun Jiao# OBJS = iw.o genl.o event.o info.o phy.o \
16*2ee67178SXianjun Jiao	interface.o ibss.o station.o survey.o util.o \
17*2ee67178SXianjun Jiao	mesh.o mpath.o scan.o reg.o version.o \
18*2ee67178SXianjun Jiao	reason.o status.o connect.o link.o offch.o ps.o cqm.o \
19*2ee67178SXianjun Jiao	bitrate.o wowlan.o coalesce.o roc.o p2p.o
20*2ee67178SXianjun Jiao
21*2ee67178SXianjun JiaoOBJS = sdrctl.o cmd.o version.o
22*2ee67178SXianjun Jiao
23*2ee67178SXianjun JiaoOBJS += sections.o
24*2ee67178SXianjun Jiao
25*2ee67178SXianjun Jiao# OBJS-$(HWSIM) += hwsim.o
26*2ee67178SXianjun Jiao
27*2ee67178SXianjun JiaoOBJS += $(OBJS-y) $(OBJS-Y)
28*2ee67178SXianjun Jiao
29*2ee67178SXianjun JiaoALL = sdrctl
30*2ee67178SXianjun Jiao
31*2ee67178SXianjun Jiaoifeq ($(NO_PKG_CONFIG),)
32*2ee67178SXianjun JiaoNL3xFOUND := $(shell $(PKG_CONFIG) --atleast-version=3.2 libnl-3.0 && echo Y)
33*2ee67178SXianjun Jiaoifneq ($(NL3xFOUND),Y)
34*2ee67178SXianjun JiaoNL31FOUND := $(shell $(PKG_CONFIG) --exact-version=3.1 libnl-3.1 && echo Y)
35*2ee67178SXianjun Jiaoifneq ($(NL31FOUND),Y)
36*2ee67178SXianjun JiaoNL3FOUND := $(shell $(PKG_CONFIG) --atleast-version=3 libnl-3.0 && echo Y)
37*2ee67178SXianjun Jiaoifneq ($(NL3FOUND),Y)
38*2ee67178SXianjun JiaoNL2FOUND := $(shell $(PKG_CONFIG) --atleast-version=2 libnl-2.0 && echo Y)
39*2ee67178SXianjun Jiaoifneq ($(NL2FOUND),Y)
40*2ee67178SXianjun JiaoNL1FOUND := $(shell $(PKG_CONFIG) --atleast-version=1 libnl-1 && echo Y)
41*2ee67178SXianjun Jiaoendif
42*2ee67178SXianjun Jiaoendif
43*2ee67178SXianjun Jiaoendif
44*2ee67178SXianjun Jiaoendif
45*2ee67178SXianjun Jiao
46*2ee67178SXianjun Jiaoifeq ($(NL1FOUND),Y)
47*2ee67178SXianjun JiaoNLLIBNAME = libnl-1
48*2ee67178SXianjun Jiaoendif
49*2ee67178SXianjun Jiao
50*2ee67178SXianjun Jiaoifeq ($(NL2FOUND),Y)
51*2ee67178SXianjun JiaoCFLAGS += -DCONFIG_LIBNL20
52*2ee67178SXianjun JiaoLIBS += -lnl-genl
53*2ee67178SXianjun JiaoNLLIBNAME = libnl-2.0
54*2ee67178SXianjun Jiaoendif
55*2ee67178SXianjun Jiao
56*2ee67178SXianjun Jiaoifeq ($(NL3xFOUND),Y)
57*2ee67178SXianjun Jiao# libnl 3.2 might be found as 3.2 and 3.0
58*2ee67178SXianjun JiaoNL3FOUND = N
59*2ee67178SXianjun JiaoCFLAGS += -DCONFIG_LIBNL30
60*2ee67178SXianjun JiaoLIBS += -lnl-genl-3
61*2ee67178SXianjun JiaoNLLIBNAME = libnl-3.0
62*2ee67178SXianjun Jiaoendif
63*2ee67178SXianjun Jiao
64*2ee67178SXianjun Jiaoifeq ($(NL3FOUND),Y)
65*2ee67178SXianjun JiaoCFLAGS += -DCONFIG_LIBNL30
66*2ee67178SXianjun JiaoLIBS += -lnl-genl
67*2ee67178SXianjun JiaoNLLIBNAME = libnl-3.0
68*2ee67178SXianjun Jiaoendif
69*2ee67178SXianjun Jiao
70*2ee67178SXianjun Jiao# nl-3.1 has a broken libnl-gnl-3.1.pc file
71*2ee67178SXianjun Jiao# as show by pkg-config --debug --libs --cflags --exact-version=3.1 libnl-genl-3.1;echo $?
72*2ee67178SXianjun Jiaoifeq ($(NL31FOUND),Y)
73*2ee67178SXianjun JiaoCFLAGS += -DCONFIG_LIBNL30
74*2ee67178SXianjun JiaoLIBS += -lnl-genl
75*2ee67178SXianjun JiaoNLLIBNAME = libnl-3.1
76*2ee67178SXianjun Jiaoendif
77*2ee67178SXianjun Jiao
78*2ee67178SXianjun Jiaoifeq ($(NLLIBNAME),)
79*2ee67178SXianjun Jiao$(error Cannot find development files for any supported version of libnl)
80*2ee67178SXianjun Jiaoendif
81*2ee67178SXianjun Jiao
82*2ee67178SXianjun JiaoLIBS += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
83*2ee67178SXianjun JiaoCFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
84*2ee67178SXianjun Jiaoendif # NO_PKG_CONFIG
85*2ee67178SXianjun Jiao
86*2ee67178SXianjun Jiaoifeq ($(V),1)
87*2ee67178SXianjun JiaoQ=
88*2ee67178SXianjun JiaoNQ=true
89*2ee67178SXianjun Jiaoelse
90*2ee67178SXianjun JiaoQ=@
91*2ee67178SXianjun JiaoNQ=echo
92*2ee67178SXianjun Jiaoendif
93*2ee67178SXianjun Jiao
94*2ee67178SXianjun Jiaoall: $(ALL)
95*2ee67178SXianjun Jiao
96*2ee67178SXianjun JiaoVERSION_OBJS := $(filter-out version.o, $(OBJS))
97*2ee67178SXianjun Jiao
98*2ee67178SXianjun Jiaoversion.c: version.sh $(patsubst %.o,%.c,$(VERSION_OBJS)) nl80211.h sdrctl.h Makefile \
99*2ee67178SXianjun Jiao		$(wildcard .git/index .git/refs/tags)
100*2ee67178SXianjun Jiao	@$(NQ) ' GEN ' $@
101*2ee67178SXianjun Jiao	$(Q)./version.sh $@
102*2ee67178SXianjun Jiao
103*2ee67178SXianjun Jiao%.o: %.c sdrctl.h nl80211.h
104*2ee67178SXianjun Jiao	@$(NQ) ' CC  ' $@
105*2ee67178SXianjun Jiao	$(Q)$(CC) $(CFLAGS) -c -o $@ $<
106*2ee67178SXianjun Jiao
107*2ee67178SXianjun Jiaosdrctl:	$(OBJS)
108*2ee67178SXianjun Jiao	@$(NQ) ' CC  ' sdrctl
109*2ee67178SXianjun Jiao	$(Q)$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o sdrctl
110*2ee67178SXianjun Jiao
111*2ee67178SXianjun Jiaocheck:
112*2ee67178SXianjun Jiao	$(Q)$(MAKE) all CC="REAL_CC=$(CC) CHECK=\"sparse -Wall\" cgcc"
113*2ee67178SXianjun Jiao
114*2ee67178SXianjun Jiao%.gz: %
115*2ee67178SXianjun Jiao	@$(NQ) ' GZIP' $<
116*2ee67178SXianjun Jiao	$(Q)gzip < $< > $@
117*2ee67178SXianjun Jiao
118*2ee67178SXianjun Jiaoinstall: sdrctl sdrctl.8.gz
119*2ee67178SXianjun Jiao	@$(NQ) ' INST sdrctl'
120*2ee67178SXianjun Jiao	$(Q)$(MKDIR) $(DESTDIR)$(SBINDIR)
121*2ee67178SXianjun Jiao	$(Q)$(INSTALL) -m 755 sdrctl $(DESTDIR)$(SBINDIR)
122*2ee67178SXianjun Jiao	@$(NQ) ' INST sdrctl.8'
123*2ee67178SXianjun Jiao	$(Q)$(MKDIR) $(DESTDIR)$(MANDIR)/man8/
124*2ee67178SXianjun Jiao	$(Q)$(INSTALL) -m 644 sdrctl.8.gz $(DESTDIR)$(MANDIR)/man8/
125*2ee67178SXianjun Jiao
126*2ee67178SXianjun Jiaoclean:
127*2ee67178SXianjun Jiao	$(Q)rm -f sdrctl *.o *~ *.gz version.c *-stamp
128