blob: fa94eb01fbc2f65a20e6283c6e6ccb79c803842c [file] [log] [blame]
VERSION_STR="\"0.3.1\""
# Look for libnl libraries
PKG_CONFIG ?= pkg-config
NL2FOUND := $(shell $(PKG_CONFIG) --atleast-version=2 libnl-2.0 && echo Y)
NL3FOUND := $(shell $(PKG_CONFIG) --atleast-version=3 libnl-3.0 && echo Y)
NL31FOUND := $(shell $(PKG_CONFIG) --exact-version=3.1 libnl-3.1 && echo Y)
NL3xFOUND := $(shell $(PKG_CONFIG) --atleast-version=3.2 libnl-3.0 && echo Y)
CFLAGS += -g -Wall -Wextra -Wno-unused-parameter -O2 -Iinc
CFLAGS += -MMD -MP
CFLAGS += -Wno-format-zero-length
LDFLAGS += -lm
ifeq ($(NL2FOUND),Y)
CFLAGS += -DCONFIG_LIBNL20
LDFLAGS += -lnl-genl
NLLIBNAME = libnl-2.0
endif
ifeq ($(NL3xFOUND),Y)
# libnl 3.2 might be found as 3.2 and 3.0
NL3FOUND = N
CFLAGS += -DCONFIG_LIBNL30
LDFLAGS += -lnl-genl-3
NLLIBNAME = libnl-3.0
endif
ifeq ($(NL3FOUND),Y)
CFLAGS += -DCONFIG_LIBNL30
LDFLAGS += -lnl-genl
NLLIBNAME = libnl-3.0
endif
# nl-3.1 has a broken libnl-gnl-3.1.pc file
# as show by pkg-config --debug --libs --cflags --exact-version=3.1 libnl-genl-3.1;echo $?
ifeq ($(NL31FOUND),Y)
CFLAGS += -DCONFIG_LIBNL30
LDFLAGS += -lnl-genl
NLLIBNAME = libnl-3.1
endif
ifeq ($(NLLIBNAME),)
$(error Cannot find development files for any supported version of libnl)
endif
LDFLAGS += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
CFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
CFLAGS+=-DVERSION_STR=$(VERSION_STR)
LDFLAGS+=-lconfig
OBJECTS=wmediumd.o config.o per.o
OBJECTS += lib/loop.o lib/sched.o lib/schedctrl.o
OBJECTS += lib/uds.o lib/vhost.o lib/wallclock.o
ifeq ($(SANITIZE),1)
CFLAGS += -fsanitize=undefined,address
# apparently these have to come first for some reason
override LDFLAGS := -lasan -lubsan -lstdc++ $(LDFLAGS)
endif
all: wmediumd
wmediumd: $(OBJECTS)
$(CC) -o $@ $(OBJECTS) $(LDFLAGS)
DEPS := $(patsubst %.o,%.d,$(OBJECTS))
clean:
rm -f $(OBJECTS) $(DEPS) wmediumd
-include *.d lib/*.d