mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
fd41dd8f9c
The commit splits original clvmd service in two new native services for systemd enabled systems while original init scripts remain unaltered. New systemd native services: 1) clvmd daemon itself (lvm2_clvmd_red_hat.service.in) 2) (de)activation of clustered VGs (lvm2_cluster_activation_red_hat.service.in) There're several reasons to split it. First, there's no support for conditional stop in systemd and AFAIK they don't plan to support it. In other words: if the deactivation fails for some reason, systemd doesn't care and will simply kill all remaining processes in original cgroup (by default). Killing the remaining procs can be suppressed however it doesn't solve the following problem: You can't repeat the stop command of a failed service. The repeated stop command is simply not propagated to the service in a failed state. You would have to start and then try to stop the service again. Unfortunately, this can't be done while the daemon is still running (and we need the daemon to stay active until all clustered VGs are deactivated properly). In a separated setup we need only to restart the failed activation service and that's fine.
452 lines
13 KiB
Cheetah
452 lines
13 KiB
Cheetah
# @configure_input@
|
|
#
|
|
# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
|
|
# Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
|
|
#
|
|
# This file is part of LVM2.
|
|
#
|
|
# This copyrighted material is made available to anyone wishing to use,
|
|
# modify, copy, or redistribute it subject to the terms and conditions
|
|
# of the GNU General Public License v.2.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software Foundation,
|
|
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
SHELL = /bin/sh
|
|
|
|
@SET_MAKE@
|
|
|
|
# Allow environment to override any built-in default value for CC.
|
|
# If there is a built-in default, CC is NOT set to @CC@ here.
|
|
CC ?= @CC@
|
|
|
|
# If $(CC) holds the usual built-in default value of 'cc' then replace it with
|
|
# the configured value.
|
|
# (To avoid this and force the use of 'cc' from the environment, supply its
|
|
# full path.)
|
|
ifeq ($(CC), cc)
|
|
CC = @CC@
|
|
endif
|
|
|
|
RANLIB = @RANLIB@
|
|
INSTALL = @INSTALL@
|
|
MKDIR_P = @MKDIR_P@
|
|
MSGFMT = @MSGFMT@
|
|
LCOV = @LCOV@
|
|
GENHTML = @GENHTML@
|
|
LN_S = @LN_S@
|
|
SED = @SED@
|
|
CFLOW_CMD = @CFLOW_CMD@
|
|
AWK = @AWK@
|
|
PYTHON = @PYTHON@
|
|
|
|
LIBS = @LIBS@
|
|
# Extra libraries always linked with static binaries
|
|
STATIC_LIBS = $(SELINUX_LIBS) $(UDEV_LIBS) $(BLKID_LIBS)
|
|
DEFS += @DEFS@
|
|
# FIXME set this only where it's needed, not globally?
|
|
CFLAGS += @CFLAGS@ @UDEV_CFLAGS@
|
|
CLDFLAGS += @CLDFLAGS@
|
|
ELDFLAGS += @ELDFLAGS@
|
|
LDDEPS += @LDDEPS@
|
|
LDFLAGS += @LDFLAGS@
|
|
LIB_SUFFIX = @LIB_SUFFIX@
|
|
LVMINTERNAL_LIBS = -llvm-internal $(DAEMON_LIBS) $(UDEV_LIBS) $(DL_LIBS) $(BLKID_LIBS)
|
|
DL_LIBS = @DL_LIBS@
|
|
PTHREAD_LIBS = @PTHREAD_LIBS@
|
|
READLINE_LIBS = @READLINE_LIBS@
|
|
SELINUX_LIBS = @SELINUX_LIBS@
|
|
UDEV_LIBS = @UDEV_LIBS@
|
|
BLKID_LIBS=@BLKID_LIBS@
|
|
TESTING = @TESTING@
|
|
|
|
# Setup directory variables
|
|
prefix = @prefix@
|
|
exec_prefix = @exec_prefix@
|
|
udev_prefix = @udev_prefix@
|
|
sysconfdir = @sysconfdir@
|
|
rootdir = $(DESTDIR)/
|
|
bindir = $(DESTDIR)@bindir@
|
|
confdir = $(DESTDIR)@CONFDIR@/lvm
|
|
includedir = $(DESTDIR)@includedir@
|
|
libdir = $(DESTDIR)@libdir@
|
|
usrlibdir = $(DESTDIR)@usrlibdir@
|
|
sbindir = $(DESTDIR)@sbindir@
|
|
usrsbindir = $(DESTDIR)@usrsbindir@
|
|
datarootdir = @datarootdir@
|
|
infodir = $(DESTDIR)@infodir@
|
|
mandir = $(DESTDIR)@mandir@
|
|
localedir = $(DESTDIR)@LOCALEDIR@
|
|
staticdir = $(DESTDIR)@STATICDIR@
|
|
udevdir = $(DESTDIR)@udevdir@
|
|
pkgconfigdir = $(usrlibdir)/pkgconfig
|
|
initdir = $(DESTDIR)$(sysconfdir)/rc.d/init.d
|
|
systemd_unit_dir = $(DESTDIR)@systemdsystemunitdir@
|
|
systemd_generator_dir = $(DESTDIR)@systemdutildir@/system-generators
|
|
systemd_dir = $(DESTDIR)@systemdutildir@
|
|
tmpfiles_dir = $(DESTDIR)@tmpfilesdir@
|
|
ocf_scriptdir = $(DESTDIR)@OCFDIR@
|
|
pyexecdir = $(DESTDIR)$(prefix)
|
|
|
|
USRLIB_RELPATH = $(shell echo $(abspath $(usrlibdir) $(libdir)) | \
|
|
$(AWK) -f $(top_srcdir)/scripts/relpath.awk)
|
|
|
|
DEFAULT_SYS_DIR = @DEFAULT_SYS_DIR@
|
|
DEFAULT_ARCHIVE_DIR = $(DEFAULT_SYS_DIR)/@DEFAULT_ARCHIVE_SUBDIR@
|
|
DEFAULT_BACKUP_DIR = $(DEFAULT_SYS_DIR)/@DEFAULT_BACKUP_SUBDIR@
|
|
DEFAULT_CACHE_DIR = $(DEFAULT_SYS_DIR)/@DEFAULT_CACHE_SUBDIR@
|
|
DEFAULT_PROFILE_DIR = $(DEFAULT_SYS_DIR)/@DEFAULT_PROFILE_SUBDIR@
|
|
DEFAULT_LOCK_DIR = @DEFAULT_LOCK_DIR@
|
|
DEFAULT_RUN_DIR = @DEFAULT_RUN_DIR@
|
|
|
|
# Setup vpath search paths for some suffixes
|
|
vpath %.c $(srcdir)
|
|
vpath %.in $(srcdir)
|
|
vpath %.po $(srcdir)
|
|
vpath %.exported_symbols $(srcdir)
|
|
|
|
interface = @interface@
|
|
interfacebuilddir = $(top_builddir)/libdm/$(interface)
|
|
|
|
# The number of jobs to run, if blank, defaults to the make standard
|
|
ifndef MAKEFLAGS
|
|
MAKEFLAGS = @JOBS@
|
|
endif
|
|
|
|
# Handle installation of files
|
|
ifeq ("@WRITE_INSTALL@", "yes")
|
|
# leaving defaults
|
|
M_INSTALL_SCRIPT =
|
|
M_INSTALL_DATA = -m 644
|
|
else
|
|
M_INSTALL_PROGRAM = -m 555
|
|
M_INSTALL_DATA = -m 444
|
|
endif
|
|
INSTALL_PROGRAM = $(INSTALL) $(M_INSTALL_PROGRAM) $(STRIP)
|
|
INSTALL_DATA = $(INSTALL) -p $(M_INSTALL_DATA)
|
|
INSTALL_WDATA = $(INSTALL) -p -m 644
|
|
|
|
INSTALL_DIR = $(INSTALL) -m 755 -d
|
|
INSTALL_ROOT_DIR = $(INSTALL) -m 700 -d
|
|
INSTALL_ROOT_DATA = $(INSTALL) -m 600
|
|
INSTALL_SCRIPT = $(INSTALL) -p $(M_INSTALL_PROGRAM)
|
|
|
|
.SUFFIXES: .c .d .o .so .a .po .pot .mo .dylib
|
|
|
|
WFLAGS += -Wall -Wundef -Wshadow -Wcast-align -Wwrite-strings \
|
|
-Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
|
|
-Winline -Wmissing-noreturn -Wformat-security -Wredundant-decls \
|
|
-Wpointer-arith -Wuninitialized -Wmissing-include-dirs \
|
|
-Wfloat-equal -Wstrict-prototypes \
|
|
-Wold-style-definition -Wmissing-format-attribute
|
|
|
|
ifeq ("@HAVE_WJUMP@", "yes")
|
|
WFLAGS += -Wjump-misses-init
|
|
endif
|
|
|
|
ifeq ("@HAVE_WCLOBBERED@", "yes")
|
|
WFLAGS += -Wclobbered -Wempty-body -Wignored-qualifiers \
|
|
-Wmissing-parameter-type -Wold-style-declaration -Woverride-init \
|
|
-Wtype-limits -Wsync-nand -Wlogical-op
|
|
endif
|
|
|
|
ifneq ("@STATIC_LINK@", "yes")
|
|
ifeq ("@HAVE_PIE@", "yes")
|
|
ifeq ("@HAVE_FULL_RELRO@", "yes")
|
|
EXTRA_EXEC_CFLAGS += -fPIE -DPIE
|
|
EXTRA_EXEC_LDFLAGS += -Wl,-z,relro,-z,now -pie
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
#WFLAGS += -W -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers
|
|
#WFLAGS += -Wsign-compare -Wunused-parameter -Wmissing-field-initializers
|
|
#WFLAGS += -Wconversion -Wbad-function-cast -Wcast-qual -Waggregate-return -Wpacked
|
|
#WFLAGS += -pedantic -std=gnu99
|
|
#DEFS += -DDEBUG_CRC32
|
|
|
|
CFLAGS += -fPIC @COPTIMISE_FLAG@
|
|
LDFLAGS += @COPTIMISE_FLAG@
|
|
|
|
ifeq ("@DEBUG@", "yes")
|
|
CFLAGS += -g -fno-omit-frame-pointer
|
|
DEFS += -DDEBUG
|
|
# memory debugging is not thread-safe yet
|
|
ifneq ("@DMEVENTD@", "yes")
|
|
DEFS += -DDEBUG_MEM
|
|
endif
|
|
endif
|
|
|
|
ifeq ("@INTL@", "yes")
|
|
DEFS += -DINTL_PACKAGE=\"@INTL_PACKAGE@\" -DLOCALEDIR=\"@LOCALEDIR@\"
|
|
endif
|
|
|
|
LDFLAGS += -L$(top_builddir)/libdm -L$(top_builddir)/lib
|
|
CLDFLAGS += -L$(top_builddir)/libdm -L$(top_builddir)/lib
|
|
|
|
DAEMON_LIBS = -ldaemonclient
|
|
LDFLAGS += -L$(top_builddir)/libdaemon/client
|
|
CLDFLAGS += -L$(top_builddir)/libdaemon/client
|
|
|
|
ifeq ("@DMEVENTD@", "yes")
|
|
LDFLAGS += -L$(top_builddir)/daemons/dmeventd
|
|
CLDFLAGS += -L$(top_builddir)/daemons/dmeventd
|
|
endif
|
|
|
|
ifeq ("@DM_COMPAT@", "yes")
|
|
DEFS += -DDM_COMPAT
|
|
endif
|
|
|
|
ifeq ("@DM_IOCTLS@", "yes")
|
|
DEFS += -DDM_IOCTLS
|
|
endif
|
|
|
|
# Combination of DEBUG_POOL and DEBUG_ENFORCE_POOL_LOCKING is not suppored.
|
|
#DEFS += -DDEBUG_POOL
|
|
# Default pool locking is using the crc checksum. With mprotect memory
|
|
# enforcing compilation faulty memory write could be easily found.
|
|
#DEFS += -DDEBUG_ENFORCE_POOL_LOCKING
|
|
#DEFS += -DBOUNDS_CHECK
|
|
|
|
#CFLAGS += -pg
|
|
#LDFLAGS += -pg
|
|
|
|
STRIP=
|
|
#STRIP = -s
|
|
|
|
LVM_VERSION := $(shell cat $(top_srcdir)/VERSION)
|
|
|
|
LIB_VERSION_LVM := $(shell $(AWK) -F '.' '{printf "%s.%s",$$1,$$2}' $(top_srcdir)/VERSION)
|
|
|
|
LIB_VERSION_DM := $(shell $(AWK) -F '.' '{printf "%s.%s",$$1,$$2}' $(top_srcdir)/VERSION_DM)
|
|
|
|
LIB_VERSION_APP := $(shell $(AWK) -F '[(). ]' '{printf "%s.%s",$$1,$$4}' $(top_srcdir)/VERSION)
|
|
|
|
INCLUDES += -I. -I$(top_builddir)/include
|
|
|
|
INC_LNS = $(top_builddir)/include/.symlinks_created
|
|
|
|
DEPS = $(top_builddir)/make.tmpl $(top_srcdir)/VERSION \
|
|
$(top_builddir)/Makefile $(INC_LNS)
|
|
|
|
OBJECTS = $(SOURCES:%.c=%.o)
|
|
POTFILES = $(SOURCES:%.c=%.pot)
|
|
|
|
.PHONY: all pofile distclean clean cleandir cflow device-mapper
|
|
.PHONY: install install_cluster install_device-mapper install_lvm2
|
|
.PHONY: install_lib_shared install_dm_plugin install_lvm2_plugin
|
|
.PHONY: install_ocf help
|
|
.PHONY: python_bindings install_python_bindings
|
|
.PHONY: $(SUBDIRS) $(SUBDIRS.install) $(SUBDIRS.clean) $(SUBDIRS.distclean)
|
|
.PHONY: $(SUBDIRS.pofile) $(SUBDIRS.install_cluster) $(SUBDIRS.cflow)
|
|
.PHONY: $(SUBDIRS.device-mapper) $(SUBDIRS.install-device-mapper)
|
|
|
|
SUBDIRS.device-mapper := $(SUBDIRS:=.device-mapper)
|
|
SUBDIRS.install := $(SUBDIRS:=.install)
|
|
SUBDIRS.install_cluster := $(SUBDIRS:=.install_cluster)
|
|
SUBDIRS.install_device-mapper := $(SUBDIRS:=.install_device-mapper)
|
|
SUBDIRS.install_lvm2 := $(SUBDIRS:=.install_lvm2)
|
|
SUBDIRS.install_ocf := $(SUBDIRS:=.install_ocf)
|
|
SUBDIRS.pofile := $(SUBDIRS:=.pofile)
|
|
SUBDIRS.cflow := $(SUBDIRS:=.cflow)
|
|
SUBDIRS.clean := $(SUBDIRS:=.clean)
|
|
SUBDIRS.distclean := $(SUBDIRS:=.distclean)
|
|
|
|
TARGETS += $(LIB_SHARED) $(LIB_STATIC)
|
|
|
|
all: $(SUBDIRS) $(TARGETS)
|
|
|
|
install: all $(SUBDIRS.install)
|
|
install_cluster: all $(SUBDIRS.install_cluster)
|
|
install_device-mapper: $(SUBDIRS.install_device-mapper)
|
|
install_lvm2: $(SUBDIRS.install_lvm2)
|
|
install_ocf: $(SUBDIRS.install_ocf)
|
|
cflow: $(SUBDIRS.cflow)
|
|
|
|
$(SUBDIRS): $(SUBDIRS.device-mapper)
|
|
$(MAKE) -C $@
|
|
|
|
$(SUBDIRS.device-mapper):
|
|
$(MAKE) -C $(@:.device-mapper=) device-mapper
|
|
|
|
$(SUBDIRS.install): $(SUBDIRS)
|
|
$(MAKE) -C $(@:.install=) install
|
|
|
|
$(SUBDIRS.install_cluster): $(SUBDIRS)
|
|
$(MAKE) -C $(@:.install_cluster=) install_cluster
|
|
|
|
$(SUBDIRS.install_device-mapper): device-mapper
|
|
$(MAKE) -C $(@:.install_device-mapper=) install_device-mapper
|
|
|
|
$(SUBDIRS.install_lvm2): $(SUBDIRS)
|
|
$(MAKE) -C $(@:.install_lvm2=) install_lvm2
|
|
|
|
$(SUBDIRS.install_ocf):
|
|
$(MAKE) -C $(@:.install_ocf=) install_ocf
|
|
|
|
$(SUBDIRS.clean):
|
|
-$(MAKE) -C $(@:.clean=) clean
|
|
|
|
$(SUBDIRS.distclean):
|
|
-$(MAKE) -C $(@:.distclean=) distclean
|
|
|
|
$(SUBDIRS.cflow):
|
|
$(MAKE) -C $(@:.cflow=) cflow
|
|
|
|
ifeq ("@INTL@", "yes")
|
|
pofile: $(SUBDIRS.pofile) $(POTFILES)
|
|
|
|
$(SUBDIRS.pofile):
|
|
$(MAKE) -C $(@:.pofile=) pofile
|
|
endif
|
|
|
|
ifneq ("$(CFLOW_LIST_TARGET)", "")
|
|
CLEAN_CFLOW += $(CFLOW_LIST_TARGET)
|
|
$(CFLOW_LIST_TARGET): $(CFLOW_LIST)
|
|
echo "CFLOW_SOURCES += $(addprefix \
|
|
\$$(top_srcdir)$(subst $(top_srcdir),,$(srcdir))/, $(CFLOW_LIST))" > $@
|
|
cflow: $(CFLOW_LIST_TARGET)
|
|
endif
|
|
|
|
ifneq ("$(CFLOW_TARGET)", "")
|
|
CLEAN_CFLOW += \
|
|
$(CFLOW_TARGET).cflow \
|
|
$(CFLOW_TARGET).xref \
|
|
$(CFLOW_TARGET).tree \
|
|
$(CFLOW_TARGET).rtree \
|
|
$(CFLOW_TARGET).rxref
|
|
|
|
ifneq ("$(CFLOW_CMD)", "")
|
|
CFLOW_FLAGS +=\
|
|
--cpp="$(CC) -E" \
|
|
--symbol _ISbit:wrapper \
|
|
--symbol __attribute__:wrapper \
|
|
--symbol __const__:wrapper \
|
|
--symbol __const:type \
|
|
--symbol __restrict:type \
|
|
--symbol __extension__:wrapper \
|
|
--symbol __nonnull:wrapper \
|
|
--symbol __nothrow__:wrapper \
|
|
--symbol __pure__:wrapper \
|
|
--symbol __REDIRECT:wrapper \
|
|
--symbol __REDIRECT_NTH:wrapper \
|
|
--symbol __wur:wrapper \
|
|
-I$(top_srcdir)/libdm \
|
|
-I$(top_srcdir)/libdm/ioctl \
|
|
-I$(top_srcdir)/daemons/dmeventd/plugins/lvm2/ \
|
|
$(INCLUDES) $(DEFS)
|
|
|
|
$(CFLOW_TARGET).cflow: $(CFLOW_SOURCES)
|
|
$(CFLOW_CMD) -o$@ $(CFLOW_FLAGS) $(CFLOW_SOURCES)
|
|
$(CFLOW_TARGET).rxref: $(CFLOW_SOURCES)
|
|
$(CFLOW_CMD) -o$@ $(CFLOW_FLAGS) -r --omit-arguments $(CFLOW_SOURCES)
|
|
$(CFLOW_TARGET).tree: $(CFLOW_SOURCES)
|
|
$(CFLOW_CMD) -o$@ $(CFLOW_FLAGS) --omit-arguments -T -b $(CFLOW_SOURCES)
|
|
$(CFLOW_TARGET).xref: $(CFLOW_SOURCES)
|
|
$(CFLOW_CMD) -o$@ $(CFLOW_FLAGS) --omit-arguments -x $(CFLOW_SOURCES)
|
|
#$(CFLOW_TARGET).rtree: $(CFLOW_SOURCES)
|
|
# $(CFLOW_CMD) -o$@ $(CFLOW_FLAGS) -r --omit-arguments -T -b $(CFLOW_SOURCES)
|
|
cflow: $(CFLOW_TARGET).cflow $(CFLOW_TARGET).tree $(CFLOW_TARGET).rxref $(CFLOW_TARGET).xref
|
|
#$(CFLOW_TARGET).rtree
|
|
endif
|
|
endif
|
|
|
|
$(TARGETS): $(OBJECTS)
|
|
|
|
%.o: %.c
|
|
$(CC) -c $(INCLUDES) $(DEFS) $(WFLAGS) $(CFLAGS) $(CFLAGS_$@) $< -o $@
|
|
|
|
%.pot: %.c Makefile
|
|
$(CC) -E $(INCLUDES) -include $(top_srcdir)/include/pogen.h \
|
|
$(DEFS) $(WFLAGS) $(CFLAGS) $< > $@
|
|
|
|
%.so: %.o
|
|
$(CC) -c $(CFLAGS) $(CLDFLAGS) $< $(LIBS) -o $@
|
|
|
|
ifneq (,$(LIB_SHARED))
|
|
|
|
TARGETS += $(LIB_SHARED).$(LIB_VERSION)
|
|
$(LIB_SHARED).$(LIB_VERSION): $(OBJECTS) $(LDDEPS)
|
|
ifeq ("@LIB_SUFFIX@","so")
|
|
$(CC) -shared -Wl,-soname,$(notdir $@) \
|
|
$(CFLAGS) $(CLDFLAGS) $(OBJECTS) $(LIBS) -o $@
|
|
endif
|
|
ifeq ("@LIB_SUFFIX@","dylib")
|
|
$(CC) -dynamiclib -dylib_current_version,$(LIB_VERSION) \
|
|
$(CFLAGS) $(CLDFLAGS) $(OBJECTS) $(LIBS) -o $@
|
|
endif
|
|
|
|
$(LIB_SHARED): $(LIB_SHARED).$(LIB_VERSION)
|
|
$(LN_S) -f $(<F) $@
|
|
|
|
install_lib_shared: $(LIB_SHARED)
|
|
$(INSTALL_PROGRAM) -D $< $(libdir)/$(<F).$(LIB_VERSION)
|
|
$(INSTALL_DIR) $(usrlibdir)
|
|
$(LN_S) -f $(USRLIB_RELPATH)$(<F).$(LIB_VERSION) $(usrlibdir)/$(<F)
|
|
|
|
# FIXME: plugins are installed to subdirs
|
|
# and for compatibility links in libdir are created
|
|
# when the code is fixed links could be removed.
|
|
install_dm_plugin: $(LIB_SHARED)
|
|
$(INSTALL_PROGRAM) -D $< $(libdir)/device-mapper/$(<F)
|
|
$(LN_S) -f device-mapper/$(<F) $(libdir)/$(<F)
|
|
|
|
install_lvm2_plugin: $(LIB_SHARED)
|
|
$(INSTALL_PROGRAM) -D $< $(libdir)/lvm2/$(<F)
|
|
$(LN_S) -f lvm2/$(<F) $(libdir)/$(<F)
|
|
$(LN_S) -f $(<F) $(libdir)/$(<F).$(LIB_VERSION)
|
|
endif
|
|
|
|
$(LIB_STATIC): $(OBJECTS)
|
|
$(RM) $@
|
|
$(AR) rs $@ $(OBJECTS)
|
|
|
|
%.d: %.c
|
|
$(MKDIR_P) $(dir $@); \
|
|
set -e; \
|
|
FILE=`echo $@ | sed 's/\\//\\\\\\//g;s/\\.d//g'`; \
|
|
DEPS=`echo $(DEPS) | sed -e 's/\\//\\\\\\//g'`; \
|
|
$(CC) -MM $(INCLUDES) $(DEFS) -o $@ $<; \
|
|
sed -i "s/\(.*\)\.o[ :]*/$$FILE.o $$FILE.d $$FILE.pot: $$DEPS /g" $@; \
|
|
[ -s $@ ] || $(RM) $@
|
|
|
|
%.mo: %.po
|
|
$(MSGFMT) -o $@ $<
|
|
|
|
cleandir:
|
|
$(RM) $(OBJECTS) $(TARGETS) $(CLEAN_TARGETS) $(CLEAN_CFLOW) $(LDDEPS) \
|
|
$(POTFILES) $(SOURCES:%.c=%.d) $(SOURCES:%.c=%.gcno) $(SOURCES:%.c=%.gcda) \
|
|
$(SOURCES2:%.c=%.o) $(SOURCES2:%.c=%.d) $(SOURCES2:%.c=%.gcno) $(SOURCES2:%.c=%.gcda) \
|
|
.exported_symbols_generated core
|
|
|
|
clean: $(SUBDIRS.clean) cleandir
|
|
|
|
distclean: cleandir $(SUBDIRS.distclean)
|
|
test -z "$(DISTCLEAN_DIRS)" || $(RM) -r $(DISTCLEAN_DIRS)
|
|
$(RM) $(DISTCLEAN_TARGETS) Makefile
|
|
|
|
.exported_symbols_generated: $(EXPORTED_HEADER) .exported_symbols
|
|
set -e; \
|
|
( cat $(srcdir)/.exported_symbols; \
|
|
if test x$(EXPORTED_HEADER) != x; then \
|
|
$(CC) -E -P $(INCLUDES) $(DEFS) $(EXPORTED_HEADER) | \
|
|
$(SED) -ne "/^typedef|}/!s/.*[ *]\($(EXPORTED_FN_PREFIX)_[a-z0-9_]*\)(.*/\1/p"; \
|
|
fi \
|
|
) > $@
|
|
|
|
.export.sym: .exported_symbols_generated
|
|
set -e; (echo "Base {"; echo " global:"; \
|
|
sed "s/^/ /;s/$$/;/" < $<; \
|
|
echo " local:"; echo " *;"; echo "};") > $@
|
|
|
|
ifeq (,$(findstring $(MAKECMDGOALS),cscope.out cflow clean distclean lcov \
|
|
help check check_local check_cluster check_lvmetad))
|
|
ifdef SOURCES
|
|
-include $(SOURCES:.c=.d)
|
|
endif
|
|
ifdef SOURCES2
|
|
-include $(SOURCES2:.c=.d)
|
|
endif
|
|
endif
|