Gitweb:
http://git.fedorahosted.org/git/?p=cluster.git;a=commitdiff;h=6e2dd4f0129...
Commit: 6e2dd4f0129c8b1635bf401668dcb10dca29a9a6
Parent: b4408e050960c35793afb33b6c589bf579252609
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
AuthorDate: Tue Sep 10 20:41:16 2013 +0200
Committer: Fabio M. Di Nitto <fdinitto(a)redhat.com>
CommitterDate: Thu Sep 12 09:49:27 2013 +0200
build: workaround gcc __FILE__ macro expansion to save fdata size at runtime
Signed-off-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Acked-by: Jan Friesse <jfriesse(a)redhat.com>
---
configure | 4 ++++
make/cobj.mk | 34 +++++++++++++++++++++++++++++++---
make/defines.mk.input | 3 +++
3 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/configure b/configure
index 1e6356e..677d305 100755
--- a/configure
+++ b/configure
@@ -19,6 +19,8 @@ my $ret = 0;
# eg. only the first 3 digits
my $required_kernelversion = '2.6.31';
+my $outoftree = '';
+
my %options = (
help => \$help,
cc => \$cc,
@@ -356,6 +358,7 @@ if (! -d "$objdir/make") {
symlinks("bindings","*.PL");
symlinks("bindings","MANIFEST");
symlinks("bindings","typemap");
+ $outoftree = 1;
} else {
print "nothing to do\n";
}
@@ -614,6 +617,7 @@ while (<IFILE>) {
$_ =~ s/\@DISABLE_FENCE\@/$without_fence/;
$_ =~ s/\@DISABLE_RGMANAGER\@/$without_rgmanager/;
$_ =~ s/\@DISABLE_BINDINGS\@/$without_bindings/;
+ $_ =~ s/\@OUTOFTREEBUILD\@/$outoftree/;
print OFILE "$_\n";
}
diff --git a/make/cobj.mk b/make/cobj.mk
index c018293..514e487 100644
--- a/make/cobj.mk
+++ b/make/cobj.mk
@@ -1,10 +1,38 @@
+ifdef outoftreebuild
+
+%.o: $(S)/%.c
+ cd $(S) > /dev/null 2>&1 && \
+ src=$(shell basename $<) && \
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(REENT_CFLAGS) -c -o $(O)/$@ $$src && \
+ cd - >/dev/null 2>&1;
+
+# used by dlm/libdlm
+%_lt.o: $(S)/%.c
+ cd $(S) > /dev/null 2>&1 && \
+ src=$(shell basename $<) && \
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $(O)/$@ $$src && \
+ cd - >/dev/null 2>&1;
+
+# used by rgmanager/src/daemons
+%-noccs.o: $(S)/%.c
+ cd $(S) > /dev/null 2>&1 && \
+ src=$(shell basename $<) && \
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(NOCCS_CFLAGS) -c -o $(O)/$@ $$src && \
+ cd - >/dev/null 2>&1;
+
+else
%.o: $(S)/%.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(REENT_CFLAGS) -c -o $@ $<
+ src=$(shell basename $<) && \
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(REENT_CFLAGS) -c -o $@ $$src
# used by dlm/libdlm
%_lt.o: $(S)/%.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
+ src=$(shell basename $<) && \
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $$src
# used by rgmanager/src/daemons
%-noccs.o: $(S)/%.c
- $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(NOCCS_CFLAGS) -c -o $@ $<
+ src=$(shell basename $<) && \
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(NOCCS_CFLAGS) -c -o $@ $$src
+
+endif
diff --git a/make/defines.mk.input b/make/defines.mk.input
index ee5f852..919697f 100644
--- a/make/defines.mk.input
+++ b/make/defines.mk.input
@@ -70,6 +70,9 @@ without_bindings ?= @DISABLE_BINDINGS@
THISDIR = $(shell echo $(CURDIR) | sed -e 's|$(OBJDIR)/||g')
S=$(SRCDIR)/$(THISDIR)
+O=$(OBJDIR)/$(THISDIR)
+
+outoftreebuild ?= @OUTOFTREEBUILD@
CONFDIR=@CONFDIR@
CONFFILE=@CONFFILE@