44dc0ca3d2
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). New build artifacts: .libs subdirectories (at <buildroot> and <buildroot>/libcacard) *.lo files (at same locations as the respective o files) Added %.lo : %.c rule that uses libtool. Updated clean rule to clean up those artifacts. Added specific rule to call dtrace with libtool wrapper (note that because of a current upstream dtrace bug fixed by systemtap b1568fd85 commit the -fPIC flag isn't actually passed on. still current dtrace+libtool produced object links fine). If libtool is missing any of the following targets will complain and exit 1: any subdir: *.lo root and libcacard: libcacard.la, libcacard-instsall Tested to link and load with all tracing backends.
43 lines
1.4 KiB
Makefile
43 lines
1.4 KiB
Makefile
-include ../config-host.mak
|
|
-include $(SRC_PATH)/Makefile.objs
|
|
-include $(SRC_PATH)/rules.mak
|
|
|
|
$(call set-vpath, $(SRC_PATH):$(SRC_PATH)/libcacard)
|
|
|
|
# objects linked against normal qemu binaries, not compiled with libtool
|
|
QEMU_OBJS=$(addprefix ../,$(oslib-obj-y) qemu-malloc.o qemu-timer-common.o $(trace-obj-y))
|
|
|
|
# objects linked into a shared library, built with libtool with -fPIC if required
|
|
QEMU_OBJS_LIB=$(addsuffix .lo,$(basename $(QEMU_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 $@")
|
|
|
|
clean:
|
|
rm -f *.o */*.o *.d */*.d *.a */*.a *~ */*~ vscclient *.lo .libs/* *.la
|
|
rm -Rf .libs
|
|
|
|
all: vscclient
|
|
|
|
#########################################################################
|
|
# Rules for building libcacard standalone library
|
|
|
|
ifeq ($(LIBTOOL),)
|
|
libcacard.la:
|
|
@echo "libtool is missing, please install and rerun configure"; exit 1
|
|
|
|
install-libcacard:
|
|
@echo "libtool is missing, please install and rerun configure"; exit 1
|
|
else
|
|
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
|