]> sourceware.org Git - lvm2.git/blobdiff - make.tmpl.in
man: document allocation process in lvm.8
[lvm2.git] / make.tmpl.in
index 599aae747a78fd46918fdd1766bcbaa69f61f08c..b8b127fa2e6147a8ee851331d29791a2248cabf0 100644 (file)
@@ -1,9 +1,9 @@
 # @configure_input@
 #
 # Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
-# Copyright (C) 2004 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
 #
-# This file is part of the LVM2.
+# 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
@@ -17,66 +17,158 @@ SHELL = /bin/sh
 
 @SET_MAKE@
 
-CC = @CC@
+CC ?= @CC@
 RANLIB = @RANLIB@
-SHELL = /bin/sh
 INSTALL = @INSTALL@
+MKDIR_P = @MKDIR_P@
 MSGFMT = @MSGFMT@
+LCOV = @LCOV@
+GENHTML = @GENHTML@
 LN_S = @LN_S@
+SED = @SED@
+CFLOW_CMD = @CFLOW_CMD@
+AWK = @AWK@
+
 LIBS = @LIBS@
-CFLAGS += @DEFS@
+# Extra libraries always linked with static binaries
+STATIC_LIBS = $(SELINUX_LIBS) $(UDEV_LIBS)
+DEFS += @DEFS@
 CFLAGS += @CFLAGS@
 CLDFLAGS += @CLDFLAGS@
-CLDWHOLEARCHIVE += @CLDWHOLEARCHIVE@
-CLDNOWHOLEARCHIVE += @CLDNOWHOLEARCHIVE@
+ELDFLAGS += @ELDFLAGS@
 LDDEPS += @LDDEPS@
 LDFLAGS += @LDFLAGS@
-SOFLAG += @SOFLAG@
+LIB_SUFFIX = @LIB_SUFFIX@
+LVMINTERNAL_LIBS = -llvm-internal $(DAEMON_LIBS) $(UDEV_LIBS) $(DL_LIBS)
+DL_LIBS = @DL_LIBS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+READLINE_LIBS = @READLINE_LIBS@
+SELINUX_LIBS = @SELINUX_LIBS@
+UDEV_LIBS = @UDEV_LIBS@
+TESTING = @TESTING@
 
 # Setup directory variables
 prefix = @prefix@
 exec_prefix = @exec_prefix@
+udev_prefix = @udev_prefix@
+sysconfdir = @sysconfdir@
 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@
-
-# setup misc variables
-# define the ownership variables for the binaries and man pages
-OWNER = @OWNER@
-GROUP = @GROUP@
+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
+tmpfiles_dir = $(DESTDIR)@tmpfilesdir@
+ocf_scriptdir = $(DESTDIR)@OCFDIR@
+
+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_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
 
-SUFFIXES = .c .d .o .so .a .po .pot .mo
+# 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)
 
-CFLAGS += -fPIC -Wall -Wundef -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline
+.SUFFIXES: .c .d .o .so .a .po .pot .mo .dylib
 
-#CFLAGS += -W -Wconversion -Wpointer-arith -Wredundant-decls -Wbad-function-cast -Wcast-qual -Wmissing-noreturn
+WFLAGS += -Wall -Wundef -Wshadow -Wcast-align -Wwrite-strings \
+ -Wmissing-prototypes -Wmissing-declarations -Wnested-externs \
+ -Winline -Wmissing-noreturn -Wformat-security -Wredundant-decls \
+ -Wpointer-arith
 
-CFLAGS += @COPTIMISE_FLAG@
+#WFLAGS += -W -Wconversion -Wbad-function-cast -Wcast-qual
+#WFLAGS += -pedantic -std=gnu99
+#DEFS += -DDEBUG_CRC32
+
+CFLAGS += -fPIC  @COPTIMISE_FLAG@
+LDFLAGS += @COPTIMISE_FLAG@
 
 ifeq ("@DEBUG@", "yes")
-  CFLAGS += -g -fno-omit-frame-pointer -DDEBUG
-  CFLAGS += -DDEBUG_MEM
+  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")
-  CFLAGS += -DINTL_PACKAGE=\"@INTL_PACKAGE@\" -DLOCALEDIR=\"@LOCALEDIR@\"
+  DEFS += -DINTL_PACKAGE=\"@INTL_PACKAGE@\" -DLOCALEDIR=\"@LOCALEDIR@\"
 endif
 
-LDFLAGS += -L$(top_srcdir)/lib -L$(libdir)
+LDFLAGS += -L$(top_builddir)/libdm -L$(top_builddir)/lib
+CLDFLAGS += -L$(top_builddir)/libdm -L$(top_builddir)/lib
 
-#CFLAGS += -DDEBUG_POOL
-#CFLAGS += -DBOUNDS_CHECK
+ifeq ("@BUILD_LVMETAD@", "yes")
+  DAEMON_LIBS = -ldaemonclient
+  LDFLAGS += -L$(top_builddir)/libdaemon/client
+  CLDFLAGS += -L$(top_builddir)/libdaemon/client
+endif
+
+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
@@ -84,29 +176,40 @@ LDFLAGS += -L$(top_srcdir)/lib -L$(libdir)
 STRIP=
 #STRIP = -s
 
-LIB_VERSION := $(shell cat $(top_srcdir)/VERSION | \
-                awk -F '.' '{printf "%s.%s",$$1,$$2}')
+LVM_VERSION := $(shell cat $(top_srcdir)/VERSION)
 
-INCLUDES += -I. -I$(top_srcdir)/include
+LIB_VERSION_LVM := $(shell $(AWK) -F '.' '{printf "%s.%s",$$1,$$2}' $(top_srcdir)/VERSION)
 
-ifdef DESTDIR
-  INCLUDES += -I$(DESTDIR)/usr/include
-endif
+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)
 
-INC_LNS = $(top_srcdir)/include/.symlinks_created
+INCLUDES += -I. -I$(top_builddir)/include
 
-DEPS = $(top_srcdir)/make.tmpl $(top_srcdir)/VERSION Makefile $(INC_LNS)
+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 install install_cluster pofile distclean clean
+.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: $(SUBDIRS) $(SUBDIRS.install) $(SUBDIRS.clean) $(SUBDIRS.distclean)
-.PHONY: $(SUBDIRS.pofile) $(SUBDIRS.install_cluster)
+.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)
 
@@ -116,22 +219,41 @@ 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): $(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)
 
@@ -139,58 +261,151 @@ $(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) $(CFLAGS) $< -o $@
+       $(CC) -c $(INCLUDES) $(DEFS) $(WFLAGS) $(CFLAGS) $< -o $@
 
 %.pot: %.c Makefile
        $(CC) -E $(INCLUDES) -include $(top_srcdir)/include/pogen.h \
-               $(CFLAGS) $< > $@
+               $(DEFS) $(WFLAGS) $(CFLAGS) $< > $@
 
 %.so: %.o
-       $(CC) -c $(INCLUDES) $(CFLAGS) $< -o $@
+       $(CC) -c $(CFLAGS) $(CLDFLAGS) $< $(LIBS) -o $@
 
-$(LIB_SHARED): $(OBJECTS) $(LDDEPS)
-       $(CC) $(SOFLAG) -Wl,-soname,$(notdir $@).$(LIB_VERSION) \
-       $(CLDFLAGS) $(OBJECTS) -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) $(CFLAGS) $< | \
-       sed "s/\(.*\)\.o[ :]*/$$FILE.o $$FILE.d $$FILE.pot: $$DEPS /g" > $@; \
+       $(CC) -MM $(INCLUDES) $(DEFS) -o $@ $<; \
+       sed -i "s/\(.*\)\.o[ :]*/$$FILE.o $$FILE.d $$FILE.pot: $$DEPS /g" $@; \
        [ -s $@ ] || $(RM) $@
 
 %.mo: %.po
        $(MSGFMT) -o $@ $<
 
-clean: $(SUBDIRS.clean)
-       $(RM) $(OBJECTS) $(TARGETS) $(CLEAN_TARGETS) $(SOURCES:%.c=%.d) \
-             $(SOURCES:%.c=%.pot) $(LDDEPS)
+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: $(SUBDIRS.distclean)
-       $(RM) $(OBJECTS) $(TARGETS) $(CLEAN_TARGETS) $(SOURCES:%.c=%.d) \
-             $(SOURCES:%.c=%.pot) $(LDDEPS) \
-             config.cache config.log config.status \
-             Makefile make.tmpl core \
-             version.h lvm2.po
+distclean: cleandir $(SUBDIRS.distclean)
+       test -z "$(DISTCLEAN_DIRS)" || $(RM) -r $(DISTCLEAN_DIRS)
+       $(RM) $(DISTCLEAN_TARGETS) Makefile 
 
-.export.sym: .exported_symbols
+.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 "};") > $@
 
-ifneq ($(MAKECMDGOALS),clean)
 ifneq ($(MAKECMDGOALS),distclean)
+ifeq (,$(findstring $(MAKECMDGOALS),cscope.out cflow clean distclean lcov \
help check check_local check_cluster check_lvmetad))
     ifdef SOURCES
        -include $(SOURCES:.c=.d)
     endif
-  endif
+    ifdef SOURCES2
+       -include $(SOURCES2:.c=.d)
+    endif
 endif
-
This page took 0.034701 seconds and 5 git commands to generate.