From: Anthony Liguori <anthony@codemonkey.ws>
To: Alon Levy <alevy@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] libcacard: add libcacard.la target
Date: Mon, 16 May 2011 08:28:49 -0500 [thread overview]
Message-ID: <4DD12691.7080905@codemonkey.ws> (raw)
In-Reply-To: <1305552333-19351-1-git-send-email-alevy@redhat.com>
On 05/16/2011 08:25 AM, Alon Levy wrote:
> No flag to configure is required. Instead, added a libcacard.la target that
> is not built by default, only when requested explicitly via:
>
> mkdir build
> cd build
> ../configure
> make libcacard.la
> make install-libcacard
>
> Uses libtool to do actual linking of object files and shared library, and
> installing. Tested only under linux, but supposed to work on other systems as
> well.
>
> If libtool isn't found you get a message complaining about that, only at build
> time (since it is not a default target I did not add a message at configure
> time).
>
> Note: please ignore the following warning message, it is harmless, and fixing
> it would require using libtool to build trace-dtrace.lo which, since it isn't
> built by gcc, I don't know how to do.
>
> *** Warning: Linking the shared library libcacard.la against the non-libtool
> *** objects ../trace-dtrace.o is not portable!
I don't think slipping in libtool like this is such a good idea.
Why do you need this target?
Isn't la just a static archive compiled with -fPIC? Doesn't the whole
code base need to be compiled with -fPIC then (and isn't the warning
above a legitimate concern?).
Regards,
Anthony Liguori
> ---
> Makefile | 17 +++++++++++++++++
> configure | 12 +++++++++++-
> libcacard/Makefile | 38 ++++++++++++++++++++++++++++++++++----
> 3 files changed, 62 insertions(+), 5 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 2b0438c..0215307 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -119,6 +119,23 @@ version.o: $(SRC_PATH)/version.rc config-host.mak
>
> version-obj-$(CONFIG_WIN32) += version.o
> ######################################################################
> +# Support building shared library libcacard
> +
> +.PHONY: libcacard.la install-libcacard
> +ifeq ($(LIBTOOL),)
> +libcacard.la:
> + @echo libtool is missing, please install and rerun configure
> +
> +install-libcacard:
> + @echo libtool is missing, please install and rerun configure
> +else
> +libcacard.la: $(GENERATED_HEADERS) $(oslib-obj-y) qemu-malloc.o qemu-timer-common.o $(trace-obj-y)
> + $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C libcacard V="$(V)" TARGET_DIR="$*/" libcacard.la,)
> +
> +install-libcacard: libcacard.la
> + $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C libcacard V="$(V)" TARGET_DIR="$*/" install-libcacard,)
> +endif
> +######################################################################
>
> qemu-img.o: qemu-img-cmds.h
> qemu-img.o qemu-tool.o qemu-nbd.o qemu-io.o cmd.o: $(GENERATED_HEADERS)
> diff --git a/configure b/configure
> index 0627f1d..e62841e 100755
> --- a/configure
> +++ b/configure
> @@ -1276,6 +1276,15 @@ if ! has $pkg_config; then
> fi
>
> ##########################################
> +# libtool probe
> +
> +if ! has libtool; then
> + libtool=
> +else
> + libtool=libtool
> +fi
> +
> +##########################################
> # Sparse probe
> if test "$sparse" != "no" ; then
> if has cgcc; then
> @@ -3060,6 +3069,7 @@ echo "AR=$ar">> $config_host_mak
> echo "OBJCOPY=$objcopy">> $config_host_mak
> echo "LD=$ld">> $config_host_mak
> echo "WINDRES=$windres">> $config_host_mak
> +echo "LIBTOOL=$libtool">> $config_host_mak
> echo "CFLAGS=$CFLAGS">> $config_host_mak
> echo "QEMU_CFLAGS=$QEMU_CFLAGS">> $config_host_mak
> echo "QEMU_INCLUDES=$QEMU_INCLUDES">> $config_host_mak
> @@ -3595,7 +3605,7 @@ if [ "$source_path" != `pwd` ]; then
> # out of tree build
> mkdir -p libcacard
> rm -f libcacard/Makefile
> - ln -s "$source_path/libcacard/Makefile" libcacard/Makefile
> + symlink "$source_path/libcacard/Makefile" libcacard/Makefile
> fi
>
> d=libuser
> diff --git a/libcacard/Makefile b/libcacard/Makefile
> index 1d34df0..3a5ad61 100644
> --- a/libcacard/Makefile
> +++ b/libcacard/Makefile
> @@ -4,15 +4,45 @@
>
> $(call set-vpath, $(SRC_PATH):$(SRC_PATH)/libcacard)
>
> -QEMU_OBJS=$(addprefix ../, $(oslib-obj-y) $(trace-obj-y) qemu-malloc.o qemu-timer-common.o)
> +QEMU_TRACE_OBJS=$(addprefix ../,$(trace-obj-y))
> +
> +QEMU_BASE_OBJS=$(addprefix ../,$(oslib-obj-y) qemu-malloc.o qemu-timer-common.o)
> +
> +# objects linked against normal qemu binaries, not compiled with libtool
> +QEMU_OBJS = $(QEMU_BASE_OBJS) $(QEMU_TRACE_OBJS)
> +
> +# objects linked into a shared library, built with libtool with -fPIC if required
> +QEMU_BASE_OBJS_LIB=$(addsuffix .lo,$(basename $(QEMU_BASE_OBJS)))
> +
> +QEMU_OBJS_LIB = $(QEMU_BASE_OBJS_LIB) $(QEMU_TRACE_OBJS)
>
> QEMU_CFLAGS+=-I../
>
> +libcacard.lib-y=$(addsuffix .lo,$(basename $(libcacard-y)))
> +
> vscclient: $(libcacard-y) $(QEMU_OBJS) vscclient.o
> - $(call quiet-command,$(CC) $(libcacard_libs) -lrt -o $@ $^," LINK $(TARGET_DIR)$@")
> + $(call quiet-command,$(CC) $(libcacard_libs) -lrt -o $@ $^," LINK $@")
> +
> +clean:
> + rm -f *.o */*.o *.d */*.d *.a */*.a *~ */*~ vscclient libcacard.so *.lo .libs/* *.la
> + rm -Rf .libs
>
> all: vscclient
>
> -clean:
> - rm -f *.o */*.o *.d */*.d *.a */*.a *~ */*~ vscclient
> +ifeq ($(LIBTOOL),)
> +libcacard.la:
> + @echo libtool is missing, please install and rerun configure
> +
> +install-libcacard:
> + @echo libtool is missing, please install and rerun configure
> +else
> +$(libcacard.lib-y) $(QEMU_BASE_OBJS_LIB) : %.lo: %.c
> + $(call quiet-command,libtool --mode=compile --quiet --tag=CC $(CC) $(QEMU_CFLAGS) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," lt CC $@")
> +
> +libcacard.la: $(libcacard.lib-y) $(QEMU_OBJS_LIB)
> + $(call quiet-command,libtool --mode=link --quiet --tag=CC $(CC) $(libcacard_libs) -lrt -rpath $(libdir) -o $@ $^," lt LINK $@")
>
> +install-libcacard: libcacard.la
> + $(INSTALL_DIR) "$(DESTDIR)$(libdir)"
> + libtool --mode=install $(INSTALL_PROG) libcacard.la "$(DESTDIR)$(libdir)"
> +endif
next prev parent reply other threads:[~2011-05-16 13:28 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-15 15:40 [Qemu-devel] [PATCH 0/2] add libcacard shared object target Alon Levy
2011-05-15 15:40 ` [Qemu-devel] [PATCH 1/2] configure: add libdir and --libdir Alon Levy
2011-05-15 15:40 ` [Qemu-devel] [PATCH 2/2] libcacard: add libcacard.la target Alon Levy
2011-05-16 7:00 ` Paolo Bonzini
2011-05-16 10:25 ` Alon Levy
2011-05-16 10:32 ` Paolo Bonzini
2011-05-16 12:06 ` Gerd Hoffmann
2011-05-16 12:07 ` Paolo Bonzini
2011-05-16 12:14 ` Alon Levy
2011-05-16 12:18 ` Paolo Bonzini
2011-05-16 13:25 ` [Qemu-devel] [PATCH] " Alon Levy
2011-05-16 13:28 ` Anthony Liguori [this message]
2011-05-16 13:59 ` Paolo Bonzini
2011-05-16 17:37 ` Alon Levy
2011-05-16 14:44 ` Paolo Bonzini
2011-05-16 18:06 ` Alon Levy
2011-05-16 17:40 ` Alon Levy
2011-05-17 12:03 ` Alon Levy
2011-05-17 12:32 ` Alon Levy
[not found] ` <20110518034240.GL7083@playa.tlv.redhat.com>
2011-05-18 7:16 ` Paolo Bonzini
2011-05-18 8:49 ` Alon Levy
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=4DD12691.7080905@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=alevy@redhat.com \
--cc=qemu-devel@nongnu.org \
/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.