1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00
lvm2/tools/Makefile.in
Zdenek Kabelac f83b3962c1 asan: fix some reports from libasan
When compiled and used with:

CFLAGS="-fsanitize=address -g -O0"
ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1

we have few reported issue - they where not normally spotted, since
we were still accessing our own memory - but ouf of buffer-range.

TODO: there is still something to enhance with handling of #orphan vgids
2022-02-07 20:02:11 +01:00

235 lines
6.5 KiB
Makefile

#
# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
# Copyright (C) 2004-2012 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
srcdir = @srcdir@
top_srcdir = @top_srcdir@
top_builddir = @top_builddir@
SOURCES =\
command.c \
dumpconfig.c \
formats.c \
lvchange.c \
lvconvert.c \
lvconvert_poll.c \
lvcreate.c \
lvdisplay.c \
lvextend.c \
lvmcmdline.c \
lvmdevices.c \
lvmdiskscan.c \
lvpoll.c \
lvreduce.c \
lvremove.c \
lvrename.c \
lvresize.c \
lvscan.c \
polldaemon.c \
pvchange.c \
pvck.c \
pvcreate.c \
pvdisplay.c \
pvmove.c \
pvmove_poll.c \
pvremove.c \
pvresize.c \
pvscan.c \
reporter.c \
segtypes.c \
tags.c \
toollib.c \
vgcfgbackup.c \
vgcfgrestore.c \
vgchange.c \
vgck.c \
vgcreate.c \
vgdisplay.c \
vgexport.c \
vgextend.c \
vgimport.c \
vgimportclone.c \
vgimportdevices.c \
vgmerge.c \
vgmknodes.c \
vgreduce.c \
vgremove.c \
vgrename.c \
vgscan.c \
vgsplit.c
SOURCES2 =\
lvm.c \
lvm2cmd-static.c \
lvm2cmd.c \
lvmcmdlib.c \
man-generator.c
TARGETS =\
.commands \
liblvm2cmd.a \
lvm \
man-generator
INSTALL_LVM_TARGETS = install_tools_dynamic
INSTALL_DMSETUP_TARGETS =
INSTALL_CMDLIB_TARGETS = install_cmdlib_dynamic install_cmdlib_include
ifeq ("@STATIC_LINK@", "yes")
TARGETS += lvm.static
INSTALL_LVM_TARGETS += install_tools_static
INSTALL_CMDLIB_TARGETS += install_cmdlib_static
endif
LIB_VERSION = $(LIB_VERSION_LVM)
INCLUDES = -I$(top_builddir)/tools
CLEAN_TARGETS = liblvm2cmd.$(LIB_SUFFIX) $(TARGETS_DM) \
liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION) lvm-static.o \
liblvm2cmd-static.a lvm.static \
$(LDDEPS) .exported_symbols_generated \
cmds.h command-lines-input.h command-count.h man-generator.c
ifeq ("@CMDLIB@", "yes")
TARGETS += liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION)
INSTALL_LVM_TARGETS += $(INSTALL_CMDLIB_TARGETS)
endif
EXPORTED_HEADER = $(srcdir)/lvm2cmd.h
EXPORTED_FN_PREFIX = lvm2
CFLOW_TARGET = lvm
CFLOW_SOURCES = $(addprefix $(srcdir)/, $(SOURCES) lvmcmdlib.c lvm2cmd.c)
-include $(top_builddir)/lib/liblvm-internal.cflow
include $(top_builddir)/make.tmpl
device-mapper:
all: device-mapper
CFLAGS_lvm.o += $(EXTRA_EXEC_CFLAGS)
lvm: $(OBJECTS) lvm.o $(LVMINTERNAL_LIBS)
@echo " [CC] $@"
$(Q) $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_EXEC_LDFLAGS) $(ELDFLAGS) \
-o $@ $+ $(LVMLIBS)
DEFS_man-generator.o += -DMAN_PAGE_GENERATOR
man-generator.c: $(srcdir)/command.c
@echo " [LN] $@"
$(Q) $(LN_S) -f $< $(@F)
man-generator: man-generator.o
@echo " [CC] $@"
$(Q) $(CC) $(CFLAGS) -o $@ $(<F)
lvm.static: $(OBJECTS) lvm-static.o $(LVMINTERNAL_LIBS)
@echo " [CC] $@"
$(Q) $(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacebuilddir) \
-o $@ $+ $(LVMLIBS) $(STATIC_LIBS)
liblvm2cmd.a: $(top_builddir)/lib/liblvm-internal.a $(OBJECTS) lvmcmdlib.o lvm2cmd.o
@echo " [AR] $@"
$(Q) cat $(top_builddir)/lib/liblvm-internal.a > $@
$(Q) $(AR) rs $@ $(OBJECTS) lvmcmdlib.o lvm2cmd.o > /dev/null
liblvm2cmd-static.a: $(top_builddir)/lib/liblvm-internal.a $(OBJECTS) lvmcmdlib.o lvm2cmd-static.o
@echo " [AR] $@"
$(Q) cat $(top_builddir)/lib/liblvm-internal.a > $@
$(Q) $(AR) rs $@ $(OBJECTS) lvmcmdlib.o lvm2cmd-static.o > /dev/null
liblvm2cmd.$(LIB_SUFFIX): liblvm2cmd.a $(LDDEPS)
@echo " [CC] $@"
$(Q) $(CC) -shared -Wl,-soname,$@.$(LIB_VERSION) \
$(CFLAGS) $(CLDFLAGS) -o $@ \
@CLDWHOLEARCHIVE@ $< @CLDNOWHOLEARCHIVE@ \
$(INTERNAL_LIBS) $(LVMLIBS)
liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION): liblvm2cmd.$(LIB_SUFFIX)
@echo " [LN] $@"
$(Q) $(LN_S) -f $< $@
.commands: $(srcdir)/cmdnames.h $(srcdir)/commands.h Makefile
@echo " [CC] $(<F)"
$(Q) $(CC) -E -P $< 2> /dev/null | \
$(EGREP) -v '^ *(|#.*|config|devtypes|dumpconfig|formats|fullreport|help|lastlog|lvmchange|lvpoll|pvdata|segtypes|systemid|tags|version) *$$' > .commands
command-count.h: $(srcdir)/command-lines.in Makefile
@echo " [GEN] $@"
$(Q) set -o pipefail && \
( cat $(top_srcdir)/tools/license.inc && \
echo "/* Do not edit. This file is generated by the Makefile. */" && \
echo -n "#define COMMAND_COUNT " && \
$(GREP) '^ID:' $< | $(WC) -l \
) > $@
cmds.h: $(srcdir)/command-lines.in Makefile
@echo " [GEN] $@"
$(Q) set -o pipefail && \
( cat $(srcdir)/license.inc && \
echo "/* Do not edit. This file is generated by the Makefile. */" && \
echo "cmd(CMD_NONE, none)" && \
$(GREP) '^ID:' $(srcdir)/command-lines.in | LC_ALL=C $(SORT) -u | $(AWK) '{print "cmd(" $$2 "_CMD, " $$2 ")"}' && \
echo "cmd(CMD_COUNT, count)" \
) > $@
command-lines-input.h: $(srcdir)/command-lines.in Makefile
@echo " [GEN] $@"
$(Q) set -o pipefail && \
( cat $(srcdir)/license.inc && \
echo "/* Do not edit. This file is generated by the Makefile. */" && \
echo -en "static const char _command_input[] =\n\n\"" && \
$(EGREP) -v '^#|\-\-\-|^$$' $(srcdir)/command-lines.in | $(AWK) 'BEGIN {ORS = "\\n\"\n\""} //' && \
echo "\\n\\n\";" \
) > $@
$(SOURCES:%.c=%.d) $(SOURCES2:%.c=%.d): command-lines-input.h command-count.h cmds.h
$(SOURCES:%.c=%.o) $(SOURCES2:%.c=%.o): command-lines-input.h command-count.h cmds.h
lvm.cflow lvm.xref lvm.tree lvm.xref: command-lines-input.h command-count.h cmds.h
.PHONY: install_cmdlib_dynamic install_cmdlib_static install_cmdlib_include \
install_tools_dynamic install_tools_static
install_cmdlib_include: $(srcdir)/lvm2cmd.h
@echo " [INSTALL] $(<F)"
$(Q) $(INSTALL_DATA) -D $< $(includedir)/$(<F)
install_cmdlib_dynamic: liblvm2cmd.$(LIB_SUFFIX)
@echo " [INSTALL] $<"
$(Q) $(INSTALL_PROGRAM) -D $< $(libdir)/$(<F).$(LIB_VERSION)
$(Q) $(INSTALL_DIR) $(usrlibdir)
$(Q) $(LN_S) -f $(USRLIB_RELPATH)$(<F).$(LIB_VERSION) $(usrlibdir)/$(<F)
install_cmdlib_static: liblvm2cmd-static.a
@echo " [INSTALL] $<"
$(Q) $(INSTALL_DATA) -D $< $(usrlibdir)/liblvm2cmd.a
install_tools_dynamic: lvm .commands
@echo " [INSTALL] $<"
$(Q) $(INSTALL_PROGRAM) -D $< $(sbindir)/$(<F)
@echo Creating symbolic links for individual commands in $(sbindir)
@cat .commands | while read v ; do \
test -n "$(Q)" || echo "$(LN_S) -f $(<F) $(sbindir)/$$v"; \
$(LN_S) -f $(<F) $(sbindir)/$$v; \
done
install_tools_static: lvm.static
@echo " [INSTALL] $<"
$(Q) $(INSTALL_PROGRAM) -D $< $(staticdir)/$(<F)
install_lvm2: $(INSTALL_LVM_TARGETS)
install: install_lvm2