
# 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:
	if [ -n "$(noinst_PROGRAMS)" ] ; then \
	  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 ; \
	fi ; \
	if [ -n "$(noinst_LIBRARIES)" ] ; then \
	  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 ; \
	fi
