121 lines
3.5 KiB
Makefile
121 lines
3.5 KiB
Makefile
|
#!/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
|