
# 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) expr_wont_match_me; 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
