mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
52b5620476
Compilation needs to generate 'C' locale sorted command file definitions. To always enforce 'C' sorting rules user LC_ALL instead of LANG, as LANG settings can be overuled by other LC settings like LC_COLLATE and may result into miscompiled lvm2 binary if locales ordering differs from 'C'. Reported-by: jmp-lvm2@ookaze.fr
235 lines
6.5 KiB
Makefile
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 "const char _command_input[] =\n\n\"" && \
|
|
$(EGREP) -v '^#|\-\-\-|^$$' $(srcdir)/command-lines.in | $(AWK) 'BEGIN {ORS = "\\n\"\n\""} //' && \
|
|
echo "\\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
|