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