All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kwolf@redhat.com, aliguori@us.ibm.com, stefanha@gmail.com,
	qemu-devel@nongnu.org, blauwirbel@gmail.com, eblake@redhat.com
Subject: Re: [Qemu-devel] [PATCH V3 1/5] libqblock build system
Date: Wed, 19 Sep 2012 14:35:25 +0800	[thread overview]
Message-ID: <505967AD.9060408@linux.vnet.ibm.com> (raw)
In-Reply-To: <50584784.7040600@redhat.com>

于 2012-9-18 18:05, Paolo Bonzini 写道:
> Il 18/09/2012 11:01, Wenchao Xia ha scritto:
>>    Libqblock was placed in new directory ./libqblock, libtool will build
>> dynamic library there, source files of block layer remains in ./block.
>> So block related source code will generate 3 sets of binary, first is old
>> ones used in qemu, second and third are non PIC and PIC ones in ./libqblock.
>>    GCC compiler flag visibility=hidden was used with special macro, to export
>> only symbols that was marked as PUBLIC.
>>
>> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
>> ---
>>   Makefile                    |   13 ++++++++-
>>   Makefile.objs               |    6 ++++
>>   libqblock/Makefile          |   64 +++++++++++++++++++++++++++++++++++++++++++
>>   3 files changed, 82 insertions(+), 1 deletions(-)
>>   create mode 100644 libqblock/Makefile
>>   create mode 100644 libqblock/libqblock-error.c
>>   create mode 100644 libqblock/libqblock.c
>>
>> diff --git a/Makefile b/Makefile
>> index 971e92f..b0b9b8d 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -164,6 +164,17 @@ qemu-io$(EXESUF): qemu-io.o cmd.o $(tools-obj-y) $(block-obj-y)
>>
>>   qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o
>>
>> +######################################################################
>> +# Support building shared library libqblock
>> +ifeq ($(LIBTOOL),)
>> +$(libqblock-lib-la):
>> +	@echo "libtool is missing, please install and rerun configure"; exit 1
>> +else
>> +$(libqblock-lib-la):
>> +	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C libqblock V="$(V)" TARGET_DIR="$*/" $(libqblock-lib-la),)
>> +endif
>> +###########################################################################
>> +
>>   vscclient$(EXESUF): $(libcacard-y) $(oslib-obj-y) $(trace-obj-y) $(tools-obj-y) qemu-timer-common.o libcacard/vscclient.o
>>   	$(call quiet-command,$(CC) $(LDFLAGS) -o $@ $^ $(libcacard_libs) $(LIBS),"  LINK  $@")
>>
>> @@ -227,7 +238,7 @@ clean:
>>   	rm -rf qapi-generated
>>   	rm -rf qga/qapi-generated
>>   	$(MAKE) -C tests/tcg clean
>> -	for d in $(ALL_SUBDIRS) $(QEMULIBS) libcacard; do \
>> +	for d in $(ALL_SUBDIRS) $(QEMULIBS) libcacard libqblock; do \
>>   	if test -d $$d; then $(MAKE) -C $$d $@ || exit 1; fi; \
>>   	rm -f $$d/qemu-options.def; \
>>           done
>> diff --git a/Makefile.objs b/Makefile.objs
>> index 4412757..8a4c9fc 100644
>> --- a/Makefile.objs
>> +++ b/Makefile.objs
>> @@ -248,3 +248,9 @@ nested-vars += \
>>   	common-obj-y \
>>   	extra-obj-y
>>   dummy := $(call unnest-vars)
>> +
>> +#############################################################################
>> +# libqblock
>> +
>> +libqblock-lib-la = libqblock.la
>> +libqblock-lib-path = libqblock
>> diff --git a/libqblock/Makefile b/libqblock/Makefile
>> new file mode 100644
>> index 0000000..bf7abcc
>> --- /dev/null
>> +++ b/libqblock/Makefile
>> @@ -0,0 +1,64 @@
>> +###########################################################################
>> +# libqblock Makefile
>> +# Todo:
>> +#    1 trace related files is generated in this directory, move
>> +#  them to the root directory.
>> +##########################################################################
>> +-include ../config-host.mak
>> +-include $(SRC_PATH)/Makefile.objs
>> +-include $(SRC_PATH)/rules.mak
>> +
>> +#############################################################################
>> +# Library settings
>> +#############################################################################
>> +$(call set-vpath, $(SRC_PATH))
>> +
>> +#expand the foldered vars,especially ./block
>> +dummy := $(call unnest-vars-1)
>> +
>> +#library objects
>> +tools-obj-y = $(oslib-obj-y) $(trace-obj-y) qemu-tool.o qemu-timer.o \
>> +	qemu-timer-common.o main-loop.o notify.o \
>> +	iohandler.o cutils.o iov.o async.o
>> +tools-obj-$(CONFIG_POSIX) += compatfd.o
>
> Do you really need all of these?
>
   I guess only some .o are needed, but not sure how to pick them out, 
is there some tools which can help detect which object files are needed
in final linkage?

> (BTW, I posted recently a patch to move tools-obj-y to Makefile.objs.
> It doesn't apply anymore, I'll repost---but the conflicts are trivial).
>
   greate, then I can use tools-obj-y directly.

>> +libqblock-y=libqblock.o libqblock-error.o
>> +libqblock-lib-y=$(patsubst %.o,%.lo,$(libqblock-y))
>> +
>> +QEMU_OBJS=$(tools-obj-y) $(block-obj-y)
>> +QEMU_OBJS_FILTERED=$(filter %.o,$(QEMU_OBJS))
>
> What does this filter out?
>
   $(block-obj-y) contains /block, which would cause trouble in building,
so filtered it out.

> Paolo
>
>> +QEMU_OBJS_LIB=$(patsubst %.o, %.lo,$(QEMU_OBJS_FILTERED))
>> +
>> +QEMU_CFLAGS+= -I../ -I../include
>> +#adding magic macro define for symbol hiding and exposing
>> +QEMU_CFLAGS+= -fvisibility=hidden -D LIBQB_BUILD
>> +
>> +#dependency libraries
>> +LIBS+=-lz $(LIBS_TOOLS)
>> +
>> +#################################################################
>> +# Runtime rules
>> +#################################################################
>> +clean:
>> +	rm -f *.lo *.o *.d *.la libqblock-test trace.c trace.c-timestamp
>> +	rm -rf .libs block trace
>> +
>> +all: libqblock-test
>> +	@true
>> +
>> +help:
>> +	@echo type make libqblock-test at root dirtory, libtool is required
>> +
>> +#make dir block at runtime which would hold the output of block/*.c
>> +block:
>> +	@mkdir block
>> +
>> +ifeq ($(LIBTOOL),)
>> +$(libqblock-lib-la):
>> +	@echo "libtool is missing, please install and rerun configure"; exit 1
>> +else
>> +$(libqblock-lib-la): $(libqblock-lib-y) $(QEMU_OBJS_LIB)
>> +	$(call quiet-command,$(LIBTOOL) --mode=link --quiet --tag=CC $(CC) -rpath $(libdir) -o $@ $^ $(LIBS),"  lt LINK $@")
>> +endif
>> +
>> +.PHONY: libqblock.la
>> diff --git a/libqblock/libqblock-error.c b/libqblock/libqblock-error.c
>> new file mode 100644
>> index 0000000..e69de29
>> diff --git a/libqblock/libqblock.c b/libqblock/libqblock.c
>> new file mode 100644
>> index 0000000..e69de29
>>
>


-- 
Best Regards

Wenchao Xia

  reply	other threads:[~2012-09-19  6:36 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-18  9:01 [Qemu-devel] [PATCH V3 0/5] libqblock qemu block layer library Wenchao Xia
2012-09-18  9:01 ` [Qemu-devel] [PATCH V3 1/5] libqblock build system Wenchao Xia
2012-09-18 10:05   ` Paolo Bonzini
2012-09-19  6:35     ` Wenchao Xia [this message]
2012-09-19  9:57       ` Paolo Bonzini
2012-09-27  2:15         ` Wenchao Xia
2012-09-27  7:14           ` Paolo Bonzini
2012-09-18 10:31   ` Paolo Bonzini
2012-09-18  9:01 ` [Qemu-devel] [PATCH V3 2/5] libqblock type defines Wenchao Xia
2012-09-18 10:05   ` Paolo Bonzini
2012-09-19  3:23     ` Wenchao Xia
2012-09-18  9:01 ` [Qemu-devel] [PATCH V3 3/5] libqblock API Wenchao Xia
2012-09-18  9:01 ` [Qemu-devel] [PATCH V3 4/5] libqblock test build system Wenchao Xia
2012-09-18 10:10   ` Paolo Bonzini
2012-09-19  6:39     ` Wenchao Xia
2012-09-18  9:01 ` [Qemu-devel] [PATCH V3 5/5] libqblock test example code Wenchao Xia
2012-09-18 10:10   ` Paolo Bonzini
2012-09-19  6:40     ` Wenchao Xia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=505967AD.9060408@linux.vnet.ibm.com \
    --to=xiawenc@linux.vnet.ibm.com \
    --cc=aliguori@us.ibm.com \
    --cc=blauwirbel@gmail.com \
    --cc=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.