2 # Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
3 # Copyright (C) 2004-2010 Red Hat, Inc. All rights reserved.
5 # This file is part of LVM2.
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.
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
16 top_srcdir = @top_srcdir@
17 top_builddir = @top_builddir@
79 INSTALL_LVM_TARGETS = install_tools_dynamic
80 INSTALL_DMSETUP_TARGETS = install_dmsetup_dynamic
81 INSTALL_CMDLIB_TARGETS = install_cmdlib_dynamic install_cmdlib_include
83 ifeq ("@STATIC_LINK@", "yes")
85 TARGETS_DM += dmsetup.static
86 INSTALL_LVM_TARGETS += install_tools_static
87 INSTALL_DMSETUP_TARGETS += install_dmsetup_static
88 INSTALL_CMDLIB_TARGETS += install_cmdlib_static
91 LVMLIBS = $(LVMINTERNAL_LIBS)
92 LIB_VERSION = $(LIB_VERSION_LVM)
94 CLEAN_TARGETS = liblvm2cmd.$(LIB_SUFFIX) $(TARGETS_DM) \
95 liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION) lvm-static.o \
96 liblvm2cmd-static.a dmsetup.static lvm.static
98 ifeq ("@CMDLIB@", "yes")
99 TARGETS += liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION)
100 INSTALL_LVM_TARGETS += $(INSTALL_CMDLIB_TARGETS)
103 ifeq ("@DMEVENTD@", "yes")
104 LVMLIBS += -ldevmapper-event
107 LVMLIBS += -ldevmapper
109 EXPORTED_HEADER = $(srcdir)/lvm2cmd.h
110 EXPORTED_FN_PREFIX = lvm2
112 DEFS += -DLVM_SHARED_PATH=\"$(exec_prefix)/sbin/lvm\"
114 CFLOW_LIST = lvmcmdlib.c lvm2cmd.c
115 CFLOW_LIST_TARGET = liblvm2cmd.cflow
118 include $(top_builddir)/make.tmpl
122 device-mapper: $(TARGETS_DM)
124 dmsetup: dmsetup.o $(top_builddir)/libdm/libdevmapper.$(LIB_SUFFIX)
125 $(CC) $(CFLAGS) $(LDFLAGS) -L$(top_builddir)/libdm \
126 -o $@ dmsetup.o -ldevmapper $(LIBS)
128 dmsetup.static: dmsetup.o $(interfacebuilddir)/libdevmapper.a
129 $(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacebuilddir) \
130 -o $@ dmsetup.o -ldevmapper $(STATIC_LIBS) $(LIBS)
134 lvm: $(OBJECTS) lvm.o $(top_builddir)/lib/liblvm-internal.a
135 $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS) lvm.o \
136 $(LVMLIBS) $(READLINE_LIBS) $(LIBS) -rdynamic
138 lvm.static: $(OBJECTS) lvm-static.o $(top_builddir)/lib/liblvm-internal.a $(interfacebuilddir)/libdevmapper.a
139 $(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacebuilddir) -o $@ \
140 $(OBJECTS) lvm-static.o $(LVMLIBS) $(STATIC_LIBS) $(LIBS)
142 liblvm2cmd.a: $(top_builddir)/lib/liblvm-internal.a $(OBJECTS) lvmcmdlib.o lvm2cmd.o
143 cat $(top_builddir)/lib/liblvm-internal.a > $@
144 $(AR) rs $@ $(OBJECTS) lvmcmdlib.o lvm2cmd.o
146 liblvm2cmd-static.a: $(top_builddir)/lib/liblvm-internal.a $(OBJECTS) lvmcmdlib.o lvm2cmd-static.o
147 cat $(top_builddir)/lib/liblvm-internal.a > $@
148 $(AR) rs $@ $(OBJECTS) lvmcmdlib.o lvm2cmd-static.o
150 liblvm2cmd.$(LIB_SUFFIX): liblvm2cmd.a $(LDDEPS)
151 $(CC) -shared -Wl,-soname,$@.$(LIB_VERSION) \
152 $(CFLAGS) $(CLDFLAGS) -o $@ \
153 @CLDWHOLEARCHIVE@ liblvm2cmd.a @CLDNOWHOLEARCHIVE@ \
156 liblvm2cmd.$(LIB_SUFFIX).$(LIB_VERSION): liblvm2cmd.$(LIB_SUFFIX)
159 .commands: $(srcdir)/commands.h $(srcdir)/cmdnames.h Makefile
160 $(CC) -E -P $(srcdir)/cmdnames.h 2> /dev/null | \
161 egrep -v '^ *(|#.*|dumpconfig|formats|help|pvdata|segtypes|version) *$$' > .commands
163 ifneq ("$(CFLOW_CMD)", "")
164 CFLOW_SOURCES = $(addprefix $(srcdir)/, $(SOURCES))
165 -include $(top_builddir)/libdm/libdevmapper.cflow
166 -include $(top_builddir)/lib/liblvm-internal.cflow
169 .PHONY: install_cmdlib_dynamic install_cmdlib_static install_cmdlib_include \
170 install_tools_dynamic install_tools_static \
171 install_dmsetup_dynamic install_dmsetup_static
173 install_cmdlib_include: $(srcdir)/lvm2cmd.h
174 $(INSTALL_DATA) -D $< $(includedir)/$(<F)
176 install_cmdlib_dynamic: liblvm2cmd.$(LIB_SUFFIX)
177 $(INSTALL_PROGRAM) -D $< $(libdir)/$(<F).$(LIB_VERSION)
178 $(INSTALL_DIR) $(usrlibdir)
179 $(LN_S) -f $(USRLIB_RELPATH)$(<F).$(LIB_VERSION) $(usrlibdir)/$(<F)
181 install_cmdlib_static: liblvm2cmd-static.a
182 $(INSTALL_DATA) -D $< $(usrlibdir)/liblvm2cmd.a
184 install_tools_dynamic: lvm .commands
185 $(INSTALL_PROGRAM) -D lvm $(sbindir)/lvm
186 @echo Creating symbolic links for individual commands in $(sbindir)
187 @for v in `cat .commands`; do \
188 echo "$(LN_S) -f lvm $(sbindir)/$$v"; \
189 $(LN_S) -f lvm $(sbindir)/$$v; \
192 install_tools_static: lvm.static
193 $(INSTALL_PROGRAM) -D $< $(staticdir)/$(<F)
195 install_dmsetup_dynamic: dmsetup
196 $(INSTALL_PROGRAM) -D $< $(sbindir)/$(<F)
198 install_dmsetup_static: dmsetup.static
199 $(INSTALL_PROGRAM) -D $< $(staticdir)/$(<F)
201 install_device-mapper: $(INSTALL_DMSETUP_TARGETS)
203 install_lvm2: $(INSTALL_LVM_TARGETS)
205 install: install_lvm2 install_device-mapper
207 DISTCLEAN_TARGETS += .exported_symbols_generated