On Tue, May 28, 2013 at 6:26 PM, Mathieu Desnoyers <[email protected]> wrote: > * Jérémie Galarneau ([email protected]) wrote: >> The use of LOCAL_* flags and override directives ensures that the build >> succeeds even if the user explicitly overrides CFLAGS/CPPFLAGS/LDFLAGS. > > why use LOCAL_CPPFLAGS on one hand, but "override LDFLAGS" on the other? > What's the difference ?
LOCAL_CPPFLAGS is necessary to build the example in and out of the lttng-ust tree. However, the LDFLAGS modification is only necessary when building in-tree (without installing lttng-ust). > Why should it differ ? I expect people to use these Makefiles as templates for their own projects and to completely strip the "ifdef BUILD_EXAMPLES_FROM_TREE" section. I'm using "override" here to avoid introducing a superfluous variable in the intended purpose of these examples. It doesn't make a functional difference; I just want to keep these examples as dead-simple as possible :) Jérémie > > Thanks, > > Mathieu > >> >> Fixes #537 >> >> Signed-off-by: Jérémie Galarneau <[email protected]> >> --- >> doc/examples/demo/Makefile | 14 +++++++------- >> doc/examples/easy-ust/Makefile | 10 +++++----- >> doc/examples/hello-static-lib/Makefile | 10 +++++----- >> 3 files changed, 17 insertions(+), 17 deletions(-) >> >> diff --git a/doc/examples/demo/Makefile b/doc/examples/demo/Makefile >> index bbc8ccb..27ca92b 100644 >> --- a/doc/examples/demo/Makefile >> +++ b/doc/examples/demo/Makefile >> @@ -15,14 +15,14 @@ >> CC = gcc >> LIBS = -ldl # On Linux >> #LIBS = -lc # On BSD >> -CFLAGS += -I. >> +LOCAL_CPPFLAGS += -I. >> >> # Only necessary when building from the source tree and lttng-ust is not >> # installed >> ifdef BUILD_EXAMPLES_FROM_TREE >> -CFLAGS += -I../../../include/ >> +LOCAL_CPPFLAGS += -I../../../include/ >> LIBLTTNG_UST_PATH = ../../../liblttng-ust/.libs/ >> -LDFLAGS += -L$(LIBLTTNG_UST_PATH) -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)' >> +override LDFLAGS += -L$(LIBLTTNG_UST_PATH) >> -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)' >> >> # Third-party Makefiles have to define these targets to integrate with an >> # automake project >> @@ -37,22 +37,22 @@ endif >> all: demo lttng-ust-provider-ust-tests-demo.so >> lttng-ust-provider-ust-tests-demo3.so >> >> tp.o: tp.c ust_tests_demo.h >> - $(CC) $(CPPFLAGS) $(CFLAGS) -fpic -c -o $@ $< >> + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(CFLAGS) -fpic -c -o $@ $< >> >> tp2.o: tp2.c ust_tests_demo2.h >> - $(CC) $(CPPFLAGS) $(CFLAGS) -fpic -c -o $@ $< >> + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(CFLAGS) -fpic -c -o $@ $< >> >> lttng-ust-provider-ust-tests-demo.so: tp.o tp2.o >> $(CC) -shared -o $@ $(LDFLAGS) -llttng-ust $^ >> >> tp3.o: tp3.c ust_tests_demo3.h >> - $(CC) $(CPPFLAGS) $(CFLAGS) -fpic -c -o $@ $< >> + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(CFLAGS) -fpic -c -o $@ $< >> >> lttng-ust-provider-ust-tests-demo3.so: tp3.o >> $(CC) -shared -o $@ $(LDFLAGS) -llttng-ust $^ >> >> demo.o: demo.c >> - $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< >> + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(CFLAGS) -c -o $@ $< >> >> demo: demo.o >> $(CC) -o $@ $^ $(LIBS) >> diff --git a/doc/examples/easy-ust/Makefile b/doc/examples/easy-ust/Makefile >> index e20e53a..e3546e1 100644 >> --- a/doc/examples/easy-ust/Makefile >> +++ b/doc/examples/easy-ust/Makefile >> @@ -17,14 +17,14 @@ >> CC = gcc >> LIBS = -ldl -llttng-ust # On Linux >> #LIBS = -lc -llttng-ust # On BSD >> -CFLAGS += -I. >> +LOCAL_CPPFLAGS += -I. >> >> # Only necessary when building from the source tree and lttng-ust is not >> # installed >> ifdef BUILD_EXAMPLES_FROM_TREE >> -CFLAGS += -I../../../include/ >> +LOCAL_CPPFLAGS += -I../../../include/ >> LIBLTTNG_UST_PATH = ../../../liblttng-ust/.libs/ >> -LDFLAGS += -L$(LIBLTTNG_UST_PATH) -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)' >> +override LDFLAGS += -L$(LIBLTTNG_UST_PATH) >> -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)' >> >> # Third-party Makefiles have to define these targets to integrate with an >> # automake project >> @@ -42,10 +42,10 @@ sample: sample.o tp.o >> $(CC) -o $@ $^ $(LDFLAGS) $(LIBS) >> >> sample.o: sample.c sample_component_provider.h >> - $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< >> + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(CFLAGS) -c -o $@ $< >> >> tp.o: tp.c sample_component_provider.h >> - $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< >> + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(CFLAGS) -c -o $@ $< >> >> html: sample_component_provider.html sample.html tp.html >> >> diff --git a/doc/examples/hello-static-lib/Makefile >> b/doc/examples/hello-static-lib/Makefile >> index dd246f7..85c64c1 100644 >> --- a/doc/examples/hello-static-lib/Makefile >> +++ b/doc/examples/hello-static-lib/Makefile >> @@ -13,16 +13,16 @@ >> # a program with tracepoint provider probes compiled as static libraries. >> >> CC = gcc >> -CFLAGS += -I. >> +LOCAL_CPPFLAGS += -I. >> LIBS = -ldl -llttng-ust # On Linux >> #LIBS = -lc -llttng-ust # On BSD >> >> # Only necessary when building from the source tree and lttng-ust is not >> # installed >> ifdef BUILD_EXAMPLES_FROM_TREE >> -CFLAGS += -I../../../include/ >> +LOCAL_CPPFLAGS += -I../../../include/ >> LIBLTTNG_UST_PATH = ../../../liblttng-ust/.libs/ >> -LDFLAGS += -L$(LIBLTTNG_UST_PATH) -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)' >> +override LDFLAGS += -L$(LIBLTTNG_UST_PATH) >> -Wl,-rpath='$$ORIGIN/$(LIBLTTNG_UST_PATH)' >> >> # Third-party Makefiles have to define these targets to integrate with an >> # automake project >> @@ -37,13 +37,13 @@ endif >> all: hello >> >> lttng-ust-provider-hello.o: tp.c ust_tests_hello.h >> - $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< >> + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(CFLAGS) -c -o $@ $< >> >> lttng-ust-provider-hello.a: lttng-ust-provider-hello.o >> ar -rc $@ $^ >> >> hello.o: hello.c >> - $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< >> + $(CC) $(CPPFLAGS) $(LOCAL_CPPFLAGS) $(CFLAGS) -c -o $@ $< >> >> hello: hello.o lttng-ust-provider-hello.a >> $(CC) -o $@ $(LDFLAGS) $^ $(LIBS) >> -- >> 1.8.2.3 >> >> >> _______________________________________________ >> lttng-dev mailing list >> [email protected] >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev > > -- > Mathieu Desnoyers > EfficiOS Inc. > http://www.efficios.com -- Jérémie Galarneau EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
