forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
4.1 KiB
162 lines
4.1 KiB
# SPDX-License-Identifier: GPL-2.0 |
|
# file format version |
|
FILE_VERSION = 1 |
|
|
|
LIBLOCKDEP_VERSION=$(shell make --no-print-directory -sC ../../.. kernelversion) |
|
|
|
# Makefiles suck: This macro sets a default value of $(2) for the |
|
# variable named by $(1), unless the variable has been set by |
|
# environment or command line. This is necessary for CC and AR |
|
# because make sets default values, so the simpler ?= approach |
|
# won't work as expected. |
|
define allow-override |
|
$(if $(or $(findstring environment,$(origin $(1))),\ |
|
$(findstring command line,$(origin $(1)))),,\ |
|
$(eval $(1) = $(2))) |
|
endef |
|
|
|
# Allow setting CC and AR and LD, or setting CROSS_COMPILE as a prefix. |
|
$(call allow-override,CC,$(CROSS_COMPILE)gcc) |
|
$(call allow-override,AR,$(CROSS_COMPILE)ar) |
|
$(call allow-override,LD,$(CROSS_COMPILE)ld) |
|
|
|
INSTALL = install |
|
|
|
# Use DESTDIR for installing into a different root directory. |
|
# This is useful for building a package. The program will be |
|
# installed in this directory as if it was the root directory. |
|
# Then the build tool can move it later. |
|
DESTDIR ?= |
|
DESTDIR_SQ = '$(subst ','\'',$(DESTDIR))' |
|
|
|
prefix ?= /usr/local |
|
libdir_relative = lib |
|
libdir = $(prefix)/$(libdir_relative) |
|
bindir_relative = bin |
|
bindir = $(prefix)/$(bindir_relative) |
|
|
|
export DESTDIR DESTDIR_SQ INSTALL |
|
|
|
MAKEFLAGS += --no-print-directory |
|
|
|
include ../../scripts/Makefile.include |
|
|
|
# copy a bit from Linux kbuild |
|
|
|
ifeq ("$(origin V)", "command line") |
|
VERBOSE = $(V) |
|
endif |
|
ifndef VERBOSE |
|
VERBOSE = 0 |
|
endif |
|
|
|
ifeq ($(srctree),) |
|
srctree := $(patsubst %/,%,$(dir $(CURDIR))) |
|
srctree := $(patsubst %/,%,$(dir $(srctree))) |
|
srctree := $(patsubst %/,%,$(dir $(srctree))) |
|
#$(info Determined 'srctree' to be $(srctree)) |
|
endif |
|
|
|
# Shell quotes |
|
libdir_SQ = $(subst ','\'',$(libdir)) |
|
bindir_SQ = $(subst ','\'',$(bindir)) |
|
|
|
LIB_IN := $(OUTPUT)liblockdep-in.o |
|
|
|
BIN_FILE = lockdep |
|
LIB_FILE = $(OUTPUT)liblockdep.a $(OUTPUT)liblockdep.so.$(LIBLOCKDEP_VERSION) |
|
|
|
CONFIG_INCLUDES = |
|
CONFIG_LIBS = |
|
CONFIG_FLAGS = |
|
|
|
OBJ = $@ |
|
N = |
|
|
|
export Q VERBOSE |
|
|
|
INCLUDES = -I. -I./uinclude -I./include -I../../include $(CONFIG_INCLUDES) |
|
|
|
# Set compile option CFLAGS if not set elsewhere |
|
CFLAGS ?= -g -DCONFIG_LOCKDEP -DCONFIG_STACKTRACE -DCONFIG_PROVE_LOCKING -DBITS_PER_LONG=__WORDSIZE -DLIBLOCKDEP_VERSION='"$(LIBLOCKDEP_VERSION)"' -rdynamic -O0 -g |
|
CFLAGS += -fPIC |
|
CFLAGS += -Wall |
|
|
|
override CFLAGS += $(CONFIG_FLAGS) $(INCLUDES) $(PLUGIN_DIR_SQ) |
|
|
|
ifeq ($(VERBOSE),1) |
|
Q = |
|
print_shared_lib_compile = |
|
print_install = |
|
else |
|
Q = @ |
|
print_shared_lib_compile = echo ' LD '$(OBJ); |
|
print_static_lib_build = echo ' LD '$(OBJ); |
|
print_install = echo ' INSTALL '$1' to $(DESTDIR_SQ)$2'; |
|
endif |
|
|
|
all: |
|
|
|
export srctree OUTPUT CC LD CFLAGS V |
|
include $(srctree)/tools/build/Makefile.include |
|
|
|
do_compile_shared_library = \ |
|
($(print_shared_lib_compile) \ |
|
$(CC) $(LDFLAGS) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='$(@F)';$(shell ln -sf $(@F) $(@D)/liblockdep.so)) |
|
|
|
do_build_static_lib = \ |
|
($(print_static_lib_build) \ |
|
$(RM) $@; $(AR) rcs $@ $^) |
|
|
|
CMD_TARGETS = $(LIB_FILE) |
|
|
|
TARGETS = $(CMD_TARGETS) |
|
|
|
|
|
all: fixdep all_cmd |
|
|
|
all_cmd: $(CMD_TARGETS) |
|
|
|
$(LIB_IN): force |
|
$(Q)$(MAKE) $(build)=liblockdep |
|
|
|
$(OUTPUT)liblockdep.so.$(LIBLOCKDEP_VERSION): $(LIB_IN) |
|
$(Q)$(do_compile_shared_library) |
|
|
|
$(OUTPUT)liblockdep.a: $(LIB_IN) |
|
$(Q)$(do_build_static_lib) |
|
|
|
tags: force |
|
$(RM) tags |
|
find . -name '*.[ch]' | xargs ctags --extra=+f --c-kinds=+px \ |
|
--regex-c++='/_PE\(([^,)]*).*/TEP_ERRNO__\1/' |
|
|
|
TAGS: force |
|
$(RM) TAGS |
|
find . -name '*.[ch]' | xargs etags \ |
|
--regex='/_PE(\([^,)]*\).*/TEP_ERRNO__\1/' |
|
|
|
define do_install |
|
$(print_install) \ |
|
if [ ! -d '$(DESTDIR_SQ)$2' ]; then \ |
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \ |
|
fi; \ |
|
$(INSTALL) $1 '$(DESTDIR_SQ)$2' |
|
endef |
|
|
|
install_lib: all_cmd |
|
$(Q)$(call do_install,$(LIB_FILE),$(libdir_SQ)) |
|
$(Q)$(call do_install,$(BIN_FILE),$(bindir_SQ)) |
|
|
|
install: install_lib |
|
|
|
clean: |
|
$(RM) $(OUTPUT)*.o *~ $(TARGETS) $(OUTPUT)*.a $(OUTPUT)*liblockdep*.so* $(VERSION_FILES) $(OUTPUT).*.d $(OUTPUT).*.cmd |
|
$(RM) tags TAGS |
|
|
|
PHONY += force |
|
force: |
|
|
|
# Declare the contents of the .PHONY variable as phony. We keep that |
|
# information in a variable so we can use it in if_changed and friends. |
|
.PHONY: $(PHONY)
|
|
|