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 "$@"