1. Fix out-of-build-tree support (hit a few snags).
2. Enable ${bindir} support.

Signed-off-by: Garrett Cooper <yanegomi@gmail.com>
diff --git a/Makefile b/Makefile
index 007b7a8..75e38dd 100644
--- a/Makefile
+++ b/Makefile
@@ -79,7 +79,11 @@
 endif
 
 define target_to_dir_dep_mapping
-$(1): | $$(abs_top_builddir)/$(patsubst %-,%,$(1))
+ifeq ($$(filter %-clean,$(1)),) # not *-clean
+$(1): | $$(abs_top_builddir)/$$(basename $$(subst -,.,$(1)))
+else				# clean
+$(1):: | $$(abs_top_builddir)/$$(basename $$(subst -,.,$(1)))
+endif
 endef
 
 COMMON_TARGETS		+= testcases tools
@@ -105,7 +109,7 @@
 INSTALL_DIR		:= $(DESTDIR)/$(prefix)
 
 # build tree bootstrap targets and $(INSTALL_DIR) target.
-$(addprefix $(abs_top_builddir)/,$(BOOTSTRAP_TARGETS)) $(INSTALL_DIR):
+$(addprefix $(abs_top_builddir)/,$(BOOTSTRAP_TARGETS)) $(INSTALL_DIR) $(DESTDIR)/$(bindir):
 	mkdir -m 00755 -p "$@"
 
 ## Pattern based subtarget rules.
@@ -152,11 +156,13 @@
 	$(RM) -f Version
 	$(if $(DESTDIR)$(prefix),-$(RM) -Rf "$(INSTALL_DIR)")
 
-$(foreach tgt,$(eval $(call target_to_dir_dep_mapping,$(tgt))),\
+$(foreach tgt,\
 	$(MAKE_TARGETS) include-all lib-all $(CLEAN_TARGETS) \
-	$(INSTALL_TARGETS) include-install lib-install)
+	$(INSTALL_TARGETS) include-install lib-install,\
+	$(eval $(call target_to_dir_dep_mapping,$(tgt))))
 
-SRCDIR_INSTALL_SCRIPTS	:= execltp IDcheck.sh runalltests.sh runltp runltplite.sh ver_linux
+BINDIR_INSTALL_SCRIPTS	:= execltp
+SRCDIR_INSTALL_SCRIPTS	:= IDcheck.sh runalltests.sh runltp runltplite.sh ver_linux
 SRCDIR_INSTALL_READONLY	:= Version
 SRCDIR_INSTALL_TARGETS	:= $(SRCDIR_INSTALL_SCRIPTS) $(SRCDIR_INSTALL_READONLY)
 
@@ -167,14 +173,18 @@
 $(INSTALL_DIR)/Version: Version
 	install -m 00644 "$(top_builddir)/$(@F)" "$@"
 
-$(addprefix $(DESTDIR)/$(bindir)/,$(BINDIR_INSTALL_SCRIPTS)) \
+$(addprefix $(DESTDIR)/$(bindir)/,$(BINDIR_INSTALL_SCRIPTS)): %:
+	install -m 00755 "$(top_builddir)/$(@F)" "$@"
+
 $(addprefix $(INSTALL_DIR)/,$(SRCDIR_INSTALL_SCRIPTS)): %:
 	install -m 00755 "$(top_srcdir)/$(@F)" "$@"
 
 INSTALL_TARGETS		+= $(addprefix $(INSTALL_DIR)/,\
-				$(SRCDIR_INSTALL_TARGETS))
+				$(SRCDIR_INSTALL_TARGETS))\
+			   $(addprefix $(DESTDIR)/$(bindir)/,\
+				$(BINDIR_INSTALL_SCRIPTS))
 
-$(INSTALL_TARGETS): $(INSTALL_DIR)
+$(INSTALL_TARGETS): $(INSTALL_DIR) $(DESTDIR)/$(bindir)
 
 ## Install
 install: $(INSTALL_TARGETS)
diff --git a/include/mk/automake.mk b/include/mk/automake.mk
index 5cc7d82..e23d5d4 100644
--- a/include/mk/automake.mk
+++ b/include/mk/automake.mk
@@ -110,8 +110,8 @@
 $(AUTOGENERATED_FILES): $(top_builddir)/config.status
 	$(SHELL) $^
 
-$(top_builddir)/include/config.h: include/config.h.in
+$(top_builddir)/include/config.h: $(top_srcdir)/include/config.h.in
 
-$(top_builddir)/config.status include/config.h.in:
+$(top_builddir)/config.status $(top_srcdir)/include/config.h.in:
 	$(MAKE) -C $(top_srcdir) help; \
 	exit 1
diff --git a/include/mk/config.mk.default b/include/mk/config.mk.default
index bce84d2..1f5e995 100644
--- a/include/mk/config.mk.default
+++ b/include/mk/config.mk.default
@@ -43,6 +43,7 @@
 datarootdir		:= ${prefix}/share
 includedir		:= ${prefix}/include
 exec_prefix		:= ${prefix}
+bindir			:= ${exec_prefix}/bin
 libdir			:= ${exec_prefix}/lib
 mandir			:= ${datarootdir}/man
 
diff --git a/include/mk/config.mk.in b/include/mk/config.mk.in
index 45103fd..9f44cb8 100644
--- a/include/mk/config.mk.in
+++ b/include/mk/config.mk.in
@@ -43,6 +43,7 @@
 datarootdir		:= @datarootdir@
 includedir		:= @includedir@
 exec_prefix		:= @exec_prefix@
+bindir			:= @bindir@
 libdir			:= @libdir@
 mandir			:= @mandir@
 
diff --git a/include/mk/testcases.mk b/include/mk/testcases.mk
index ff71bf6..ea26d4f 100644
--- a/include/mk/testcases.mk
+++ b/include/mk/testcases.mk
@@ -51,5 +51,5 @@
 
 LDLIBS		+= -lltp
 
-$(LIBLTP_DIR) $(abs_top_builddir)/$(TKI_DIR): %:
+$(APICMDS_DIR) $(LIBLTP_DIR) $(abs_top_builddir)/$(TKI_DIR): %:
 	mkdir -p "$@"