
# What the second for loop does: it copies libcoregrind.a and libvex.a
# into the correct (target-specific) lib dirs at install time.
# $(noinst_LIBRARIES) will look like this:
#    libcoregrind_x86_linux.a libreplacemalloc_toolpreload_x86_linux.a
#    libcoregrind_amd64_linux.a libreplacemalloc_toolpreload_amd64_linux.a
# The 'if expr' filters out all but the libcoregrind_ ones.
# pD and pU are the (arch,os) target pairs separated by a dash (pD) or
# an underscore (pU) respectively, eg amd64-linux (pD) and amd64_linux (pU).
# It then copies libcoregrind.a and libvex.a to the right places.

install-exec-local:
	for f in $(noinst_PROGRAMS); do \
	  p=`echo $$f | sed -e 's/^[^-]*-//' -e 's/\..*$$//'`; \
	  n=`echo $$f | sed -e 's/-[^-]\{1,\}-[^-.]\{1,\}//'`; \
	  $(mkinstalldirs) $(DESTDIR)$(valdir)/$$p; \
	  $(INSTALL_PROGRAM) $$f $(DESTDIR)$(valdir)/$$p/$$n; \
	done ; \
	for f in $(noinst_LIBRARIES); do \
	  if expr match $$f libcoregrind_ > /dev/null ; then \
	    pU=`echo $$f | sed -e 's/libcoregrind_//g' -e 's/\.a//g'` ; \
	    pD=`echo $$pU | sed -e 's/_/-/g'` ; \
	    $(INSTALL_DATA) $$f $(DESTDIR)$(valdir)/$$pD/libcoregrind.a ; \
	    $(INSTALL_DATA) @VEX_DIR@/libvex_$$pU.a $(DESTDIR)$(valdir)/$$pD/libvex.a ; \
	  fi ; \
	done
