1# 2# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved. 3# Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. 4# 5# This file is part of LVM2. 6# 7# This copyrighted material is made available to anyone wishing to use, 8# modify, copy, or redistribute it subject to the terms and conditions 9# of the GNU General Public License v.2. 10# 11# You should have received a copy of the GNU General Public License 12# along with this program; if not, write to the Free Software Foundation, 13# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 14 15srcdir = @srcdir@ 16top_srcdir = @top_srcdir@ 17VPATH = @srcdir@ 18 19SOURCES =\ 20 dumpconfig.c \ 21 formats.c \ 22 lvchange.c \ 23 lvconvert.c \ 24 lvcreate.c \ 25 lvdisplay.c \ 26 lvextend.c \ 27 lvmchange.c \ 28 lvmcmdline.c \ 29 lvmdiskscan.c \ 30 lvreduce.c \ 31 lvremove.c \ 32 lvrename.c \ 33 lvresize.c \ 34 lvscan.c \ 35 polldaemon.c \ 36 pvchange.c \ 37 pvck.c \ 38 pvcreate.c \ 39 pvdisplay.c \ 40 pvmove.c \ 41 pvremove.c \ 42 pvresize.c \ 43 pvscan.c \ 44 reporter.c \ 45 segtypes.c \ 46 toollib.c \ 47 vgcfgbackup.c \ 48 vgcfgrestore.c \ 49 vgchange.c \ 50 vgck.c \ 51 vgcreate.c \ 52 vgconvert.c \ 53 vgdisplay.c \ 54 vgexport.c \ 55 vgextend.c \ 56 vgimport.c \ 57 vgmerge.c \ 58 vgmknodes.c \ 59 vgreduce.c \ 60 vgremove.c \ 61 vgrename.c \ 62 vgscan.c \ 63 vgsplit.c 64 65TARGETS =\ 66 .commands \ 67 lvm 68 69INSTALL_LVM_TARGETS = install_tools_dynamic 70INSTALL_DMSETUP_TARGETS = install_dmsetup_dynamic 71INSTALL_CMDLIB_TARGETS = install_cmdlib_dynamic 72 73ifeq ("@STATIC_LINK@", "yes") 74 TARGETS += lvm.static 75 INSTALL_LVM_TARGETS += install_tools_static 76 INSTALL_DMSETUP_TARGETS += install_dmsetup_static 77 INSTALL_CMDLIB_TARGETS += install_cmdlib_static 78endif 79 80LVMLIBS = -llvm 81 82CLEAN_TARGETS = liblvm2cmd.$(LIB_SUFFIX) liblvm2cmd.a liblvm2cmd-static.a lvm lvm.o \ 83 lvm2cmd.o lvm2cmd-static.o lvm2cmdlib.o lvm.static \ 84 lvm.cflow lvm.xref lvm.tree lvm.rxref lvm.rtree \ 85 lvmcmdlib.o lvm-static.o dmsetup.o 86 87ifeq ("@CMDLIB@", "yes") 88 TARGETS += liblvm2cmd.$(LIB_SUFFIX) 89 INSTALL_LVM_TARGETS += $(INSTALL_CMDLIB_TARGETS) 90endif 91 92ifeq ("@DMEVENTD@", "yes") 93 LVMLIBS += -ldevmapper-event -lpthread 94endif 95 96LVMLIBS += -ldevmapper 97 98DEFS += -DLVM_SHARED_PATH=\"$(exec_prefix)/sbin/lvm\" 99 100include $(top_srcdir)/make.tmpl 101 102device-mapper: dmsetup 103 104dmsetup: dmsetup.o $(top_srcdir)/libdm/libdevmapper.$(LIB_SUFFIX) 105 $(CC) -o $@ dmsetup.o $(CFLAGS) $(LDFLAGS) \ 106 -L$(top_srcdir)/libdm -L$(DESTDIR)/lib -ldevmapper $(LIBS) 107 108dmsetup.static: dmsetup.o $(interfacedir)/libdevmapper.a 109 $(CC) -o $@ dmsetup.o $(CFLAGS) $(LDFLAGS) -static \ 110 -L$(interfacedir) -L$(DESTDIR)/lib -ldevmapper $(LIBS) \ 111 $(LIB_PTHREAD) 112 113all: device-mapper 114 115lvm: $(OBJECTS) lvm.o $(top_srcdir)/lib/liblvm.a 116 $(CC) -o $@ $(CFLAGS) $(OBJECTS) lvm.o \ 117 $(LDFLAGS) $(LVMLIBS) $(LIBS) -rdynamic 118 119LIB_PTHREAD = @LIB_PTHREAD@ 120lvm.static: $(OBJECTS) lvm-static.o $(top_srcdir)/lib/liblvm.a 121 $(CC) -o $@ $(CFLAGS) $(OBJECTS) lvm-static.o -static \ 122 -L$(interfacedir) $(LDFLAGS) $(LVMLIBS) $(LIBS) $(LIB_PTHREAD) -rdynamic 123 124liblvm2cmd.a: $(top_srcdir)/lib/liblvm.a $(OBJECTS) lvmcmdlib.o lvm2cmd.o 125 cat $(top_srcdir)/lib/liblvm.a > $@ 126 $(AR) rs $@ $(OBJECTS) lvmcmdlib.o lvm2cmd.o 127 128liblvm2cmd-static.a: $(top_srcdir)/lib/liblvm.a $(OBJECTS) lvmcmdlib.o lvm2cmd-static.o 129 cat $(top_srcdir)/lib/liblvm.a > $@ 130 $(AR) rs $@ $(OBJECTS) lvmcmdlib.o lvm2cmd-static.o 131 132liblvm2cmd.$(LIB_SUFFIX): liblvm2cmd.a $(LDDEPS) 133 134.commands: commands.h cmdnames.h Makefile 135 $(CC) -E -P cmdnames.h 2> /dev/null | \ 136 egrep -v '^ *(|#.*|dumpconfig|formats|help|pvdata|segtypes|version) *$$' > .commands 137 138.PHONY: install_cmdlib_dynamic install_cmdlib_static \ 139 install_tools_dynamic install_tools_static 140 141ifneq ("@CFLOW_CMD@", "") 142CFLOW_FLAGS += --cpp="$(CC) -E" 143.PHONY: lvm.cflow 144-include $(top_srcdir)/lib/liblvm.cflow 145lvm.cflow: $(SOURCES) 146 @CFLOW_CMD@ -o$@ $(CFLOW_FLAGS) $(INCLUDES) $(DEFS) $(SOURCES) 147lvm.rxref: $(SOURCES) 148 @CFLOW_CMD@ -o$@ --cpp="$(CC) -E" -r --omit-arguments -x $(INCLUDES) $(DEFS) $(SOURCES) 149lvm.xref: $(SOURCES) 150 @CFLOW_CMD@ -o$@ --cpp="$(CC) -E" --omit-arguments -x $(INCLUDES) $(DEFS) $(SOURCES) 151lvm.rtree: $(SOURCES) 152 @CFLOW_CMD@ -o$@ --cpp="$(CC) -E" -r --omit-arguments -T -b $(INCLUDES) $(DEFS) $(SOURCES) 153lvm.tree: $(SOURCES) 154 @CFLOW_CMD@ -o$@ --cpp="$(CC) -E" --omit-arguments -T -b $(INCLUDES) $(DEFS) $(SOURCES) 155cflow: lvm.cflow lvm.xref lvm.tree lvm.rtree lvm.rxref 156endif 157 158install_cmdlib_dynamic: liblvm2cmd.$(LIB_SUFFIX) 159 $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) liblvm2cmd.$(LIB_SUFFIX) \ 160 $(libdir)/liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION_LVM) 161 $(LN_S) -f liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION_LVM) $(libdir)/liblvm2cmd.$(LIB_SUFFIX) 162 $(INSTALL) -D $(OWNER) $(GROUP) -m 444 lvm2cmd.h \ 163 $(includedir)/lvm2cmd.h 164 165install_cmdlib_static: liblvm2cmd-static.a 166 $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) liblvm2cmd-static.a \ 167 $(libdir)/liblvm2cmd.a.$(LIB_VERSION_LVM) 168 $(LN_S) -f liblvm2cmd.a.$(LIB_VERSION_LVM) $(libdir)/liblvm2cmd.a 169 $(INSTALL) -D $(OWNER) $(GROUP) -m 444 lvm2cmd.h \ 170 $(includedir)/lvm2cmd.h 171 172install_tools_dynamic: lvm .commands 173 $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) lvm \ 174 $(sbindir)/lvm 175 @echo Creating symbolic links for individual commands in $(sbindir) 176 @( \ 177 for v in `cat .commands`; do \ 178 cd $(sbindir); \ 179 $(LN_S) -f lvm $$v; \ 180 done; \ 181 ) 182 183install_tools_static: lvm.static 184 $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) lvm.static \ 185 $(staticdir)/lvm.static 186 187install_dmsetup_dynamic: dmsetup 188 $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< $(sbindir)/$< 189 190install_dmsetup_static: dmsetup.static 191 $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< $(sbindir)/$< 192 193install_device-mapper: $(INSTALL_DMSETUP_TARGETS) 194 195install: $(INSTALL_LVM_TARGETS) install_device-mapper 196