On 10/24/2013 06:31 PM, [email protected] wrote: > Hi! >>>> And I think that I found an another issue we should overcome - lib.mk >>>> defines MAKE_TARGETS: >>>> >>>> MAKE_TARGETS := $(LIB) >>>> >>>> generic_leaf_target.mk also does it. >>>> >>>> So It should not be trivial to include both files (lib.mk and >>>> generic_leaf_target.mk) into one Makefile. >>>> I suppose that in that case we have to implicitly define MAKE_TARGETS in >>>> our Makefile. >>> Now this one is more complicated, but solvable. >>> >>> First of all we need to change the part in lib.mk to >>> >>> MAKE_TARGETS += $(LIB) >>> >>> Then define MAKE_TARGETS explicitly in the Makefile (we need that anyway >>> for lib: tests dependency) and add LDFLAGS and LDLIBS. The full Makefile >>> looks like: >>> >>> top_srcdir ?= ../../../../.. >>> include $(top_srcdir)/include/mk/testcases.mk >>> >>> LIBSRCS := libmsgctl.c >>> INTERNAL_LIB := libmsgctl.a >>> MAKE_TARGETS := $(patsubst %.c,%,$(wildcard msgctl??.c)) >>> >>> $(MAKE_TARGETS): $(INTERNAL_LIB) >>> >>> LDFLAGS += -L$(abs_builddir) >>> LDLIBS += -lmsgctl >>> >>> include $(abs_srcdir)/../Makefile.inc >>> include $(top_srcdir)/include/mk/lib.mk >>> include $(top_srcdir)/include/mk/generic_leaf_target.mk >>> >>> See also attached patch with all the changes and check if that works for >>> you. If so I will commit change to the lib.mk as separate patch and ask >>> you to include changes in Makefile.inc in your patchset. >> >> Yes, It works. >> >> But the compilation is performed as follows: >> >> gcc -g -O2 -g -O2 -fno-strict-aliasing -pipe -Wall >> -I/home/stas/ltp/testcases/kernel/include >> -I/home/stas/ltp/testcases/kernel/syscalls/ipc/msgctl/../lib >> -I../../../../../include -I../../../../../include >> -I../../../../../include -I../../../../../include >> -L/home/stas/ltp/testcases/kernel/syscalls/ipc/msgctl >> -L/home/stas/ltp/testcases/kernel/syscalls/ipc/msgctl/../lib >> -L../../../../../lib -L../../../../../lib msgctl01.c libmsgctl.a -lltp >> -lmsgctl -lipc -o msgctl01 >> >> So gcc 'links' msgctl01.c and libmsgctl.a at once (and additionally is >> passed -lmsgctl option). > Ah, this one. Let's fix this, the handling of static libraries is too > fragile and this may posibly break on some distribution (from my memory > Ubuntu was the most problematic one). > >> How do you think, maybe introduce my favourite .INTERMEDIATE target into >> Makefile? :) >> >> Like this: >> >> MAKE_TARGET_OBJS := $(addsuffix .o,$(MAKE_TARGETS)) >> .INTERMEDIATE: $(MAKE_TARGET_OBJS) >> >> $(MAKE_TARGET_OBJS): $(INTERNAL_LIB) >> >> #$(MAKE_TARGETS): $(INTERNAL_LIB) >> >> With this option the compilation is as follows: >> >> gcc -g -O2 -g -O2 -fno-strict-aliasing -pipe -Wall >> -I/home/stas/ltp/testcases/kernel/include >> -I/home/stas/ltp/testcases/kernel/syscalls/ipc/msgctl/../lib >> -I../../../../../include -I../../../../../include >> -I../../../../../include -I../../../../../include -c -o msgctl01.o >> msgctl01.c >> gcc -L/home/stas/ltp/testcases/kernel/syscalls/ipc/msgctl >> -L/home/stas/ltp/testcases/kernel/syscalls/ipc/msgctl/../lib >> -L../../../../../lib -L../../../../../lib msgctl01.o -lltp -lmsgctl >> -lipc -o msgctl01 >> >> I can't find any reasonable arguments for this approach. Just feels that >> it's more 'correct'. > That looks a bit like a workaround, but let's go with this one for now. > > I will take a closer look later and change it if I find a better way. > (I have a better build system documentation on my TODO) Could you commit the 'infrastructure' patches (lib.mk and etc) to master? After that I will send the updated patches to msgctl{08, 09, 10, 11} (with additional cleanup and this new Makefile).
Thank you. ------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
