Now libqblock.la can be built with neccessary object files, and can be automatically cleaned by make clean in root directory. make libqblock-clean also clean it. -fvisibility=hidden was used to hide symbols, and a special macro was introduced to export symbols that marked as public.
Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com> --- Makefile.objs | 7 +++++++ libqblock/Makefile | 31 +++++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 libqblock/libqblock-error.c create mode 100644 libqblock/libqblock.c diff --git a/Makefile.objs b/Makefile.objs index d465a72..ab2712d 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -89,6 +89,13 @@ libcacard-y += libcacard/card_7816.o common-obj-$(CONFIG_SMARTCARD_NSS) += $(libcacard-y) ###################################################################### +# libqblock + +libqblock-y += libqblock/libqblock.o libqblock/libqblock-error.o + +common-obj-$(CONFIG_LIBQBLOCK) += $(libqblock-y) + +###################################################################### # qapi common-obj-y += qmp-marshal.o qapi-visit.o qapi-types.o diff --git a/libqblock/Makefile b/libqblock/Makefile index 734d90e..cdbfffb 100644 --- a/libqblock/Makefile +++ b/libqblock/Makefile @@ -1,4 +1,31 @@ TOOLS += libqblock.la -libqblock.la: - @true +# objects linked into a shared library, built with libtool with -fPIC if required +libqblock-obj-y = $(libqblock-y) $(util-obj-y) +libqblock-obj-y += $(filter-out stubs/set-fd-handler.o, $(stub-obj-y)) +libqblock-obj-y += $(block-obj-y) + +libqblock-lobj-y=$(patsubst %.o, %.lo, $(libqblock-obj-y)) + +# libtool will build the .o files, too +$(libqblock-obj-y): | $(libqblock-lobj-y) + +LIBQBLOCK_CLEAN_TARGETS=$(libqblock-lobj-y) libqblock.la libqblock/.libs +SUBDIR_CLEAN_RULES+=libqblock-clean + +all: libqblock.la + +######################################################################### +# Rules for building libqblock standalone library + +$(libqblock-lobj-y): QEMU_CFLAGS+= -fvisibility=hidden -D LIBQB_BUILD +libqblock.la: LDFLAGS += -rpath $(libdir) -no-undefined \ + -export-syms $(SRC_PATH)/libqblock/libqblock.syms +libqblock.la: $(libqblock-lobj-y) + $(call LINK,$^) + + +.PHONY: libqblock-clean + +libqblock-clean: + rm $(LIBQBLOCK_CLEAN_TARGETS) -rf 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 -- 1.7.1