123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #!/usr/bin/make -f
- # SPDX-License-Identifier: MIT
- #
- # batman-adv helpers functions library
- #
- # Copyright (c) 2017, Sven Eckelmann <sven@narfation.org>
- #
- # Permission is hereby granted, free of charge, to any person obtaining a copy
- # of this software and associated documentation files (the "Software"), to deal
- # in the Software without restriction, including without limitation the rights
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- # copies of the Software, and to permit persons to whom the Software is
- # furnished to do so, subject to the following conditions:
- #
- # The above copyright notice and this permission notice shall be included in
- # all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- # THE SOFTWARE.
- # libbatadv build
- BINARY_NAME = libbatadv.so
- OBJ += batadv-genl.o
- # headers to install
- HEADER += batadv-genl.h
- HEADER += batman_adv.h
- # libbatadv flags and options
- CFLAGS += -pedantic -Wall -W -MD -MP
- CFLAGS += -fPIC -fvisibility=hidden
- CPPFLAGS += -D_GNU_SOURCE
- LDLIBS +=
- LDFLAGS += -shared -Wl,-export-dynamic
- # disable verbose output
- ifneq ($(findstring $(MAKEFLAGS),s),s)
- ifndef V
- Q_CC = @echo ' ' CC $@;
- Q_LD = @echo ' ' LD $@;
- export Q_CC
- export Q_LD
- endif
- endif
- ifeq ($(origin PKG_CONFIG), undefined)
- PKG_CONFIG = pkg-config
- ifeq ($(shell which $(PKG_CONFIG) 2>/dev/null),)
- $(error $(PKG_CONFIG) not found)
- endif
- endif
- ifeq ($(origin LIBNL_CFLAGS) $(origin LIBNL_LDLIBS), undefined undefined)
- LIBNL_NAME ?= libnl-3.0
- ifeq ($(shell $(PKG_CONFIG) --modversion $(LIBNL_NAME) 2>/dev/null),)
- $(error No $(LIBNL_NAME) development libraries found!)
- endif
- LIBNL_CFLAGS += $(shell $(PKG_CONFIG) --cflags $(LIBNL_NAME))
- LIBNL_LDLIBS += $(shell $(PKG_CONFIG) --libs $(LIBNL_NAME))
- endif
- CFLAGS += $(LIBNL_CFLAGS)
- LDLIBS += $(LIBNL_LDLIBS)
- ifeq ($(origin LIBNL_GENL_CFLAGS) $(origin LIBNL_GENL_LDLIBS), undefined undefined)
- LIBNL_GENL_NAME ?= libnl-genl-3.0
- ifeq ($(shell $(PKG_CONFIG) --modversion $(LIBNL_GENL_NAME) 2>/dev/null),)
- $(error No $(LIBNL_GENL_NAME) development libraries found!)
- endif
- LIBNL_GENL_CFLAGS += $(shell $(PKG_CONFIG) --cflags $(LIBNL_GENL_NAME))
- LIBNL_GENL_LDLIBS += $(shell $(PKG_CONFIG) --libs $(LIBNL_GENL_NAME))
- endif
- CFLAGS += $(LIBNL_GENL_CFLAGS)
- LDLIBS += $(LIBNL_GENL_LDLIBS)
- # standard build tools
- CC ?= gcc
- RM ?= rm -f
- INSTALL ?= install
- MKDIR ?= mkdir -p
- COMPILE.c = $(Q_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
- LINK.o = $(Q_LD)$(CC) $(CFLAGS) $(LDFLAGS) $(TARGET_ARCH)
- # standard install paths
- PREFIX = /usr/local
- INCLUDEDIR = $(PREFIX)/include
- LIBDIR = $(PREFIX)/lib
- # default target
- all: $(BINARY_NAME)
- # standard build rules
- .SUFFIXES: .o .c
- .c.o:
- $(COMPILE.c) -o $@ $<
- $(BINARY_NAME): $(OBJ)
- $(LINK.o) $^ $(LDLIBS) -o $@
- clean:
- $(RM) $(BINARY_NAME) $(OBJ) $(DEP)
- install: $(BINARY_NAME)
- $(MKDIR) $(DESTDIR)$(LIBDIR)
- $(MKDIR) $(DESTDIR)$(INCLUDEDIR)
- $(INSTALL) -m 0755 $(BINARY_NAME) $(DESTDIR)$(LIBDIR)
- $(INSTALL) -m 0644 $(HEADER) $(DESTDIR)$(INCLUDEDIR)
- # load dependencies
- DEP = $(OBJ:.o=.d)
- -include $(DEP)
- .PHONY: all clean install
- .DELETE_ON_ERROR:
- .DEFAULT_GOAL := all
|