Automatically create install directories.
authorAlan T. DeKok <aland@freeradius.org>
Tue, 17 Nov 2015 19:55:36 +0000 (14:55 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 19 Sep 2016 13:01:54 +0000 (09:01 -0400)
And make executables / libraries have order dependence on
install directories

Makefile
scripts/boiler.mk
scripts/install.mk
src/main/checkrad.mk
src/main/radlast.mk
src/main/radtest.mk
src/main/radzap.mk
src/modules/rlm_counter/all.mk.in

index 300b590..b9cdc78 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -85,23 +85,6 @@ endif
 #
 export DESTDIR := $(R)
 
-.PHONY: install.bindir
-install.bindir:
-       @[ -d $(R)$(bindir) ] || $(INSTALL) -d -m 755 $(R)$(bindir)
-
-.PHONY: install.sbindir
-install.sbindir:
-       @[ -d $(R)$(sbindir) ] || $(INSTALL) -d -m 755 $(R)$(sbindir)
-
-.PHONY: install.dirs
-install.dirs: install.bindir install.sbindir
-       @$(INSTALL) -d -m 755   $(R)$(mandir)
-       @$(INSTALL) -d -m 755   $(R)$(RUNDIR)
-       @$(INSTALL) -d -m 700   $(R)$(logdir)
-       @$(INSTALL) -d -m 700   $(R)$(radacctdir)
-       @$(INSTALL) -d -m 755   $(R)$(datadir)
-       @$(INSTALL) -d -m 755   $(R)$(dictdir)
-
 DICTIONARIES := $(wildcard share/dictionary*)
 install.share: $(addprefix $(R)$(dictdir)/,$(notdir $(DICTIONARIES)))
 
@@ -125,7 +108,9 @@ $(R)$(mandir)/%: man/%
 #
 ALL_INSTALL := $(patsubst %rlm_test.la,,$(ALL_INSTALL))
 
-install: install.dirs install.share install.man
+install: install.share install.man
+       @$(INSTALL) -d -m 700   $(R)$(logdir)
+       @$(INSTALL) -d -m 700   $(R)$(radacctdir)
 
 ifneq ($(RADMIN),)
 ifneq ($(RGROUP),)
index 6205904..be5f6b8 100644 (file)
@@ -648,6 +648,11 @@ ifneq "$(MAKECMDGOALS)" "clean"
       $(eval -include ${${TGT}_DEPS}))
 endif
 
+# Build rules for installation subdirectories
+$(foreach D,$(sort $(dir ${ALL_INSTALL})),\
+  $(eval $(call ADD_INSTALL_RULE.dir,${D})))
+
+
 scan: ${ALL_PLISTS}
 
 .PHONY: clean.scan
index 66c4943..f233350 100644 (file)
@@ -46,9 +46,8 @@ define ADD_INSTALL_RULE.exe
     install: $${${1}_INSTALLDIR}/$(notdir ${1})
 
     # Install executable ${1}
-    $${${1}_INSTALLDIR}/$(notdir ${1}): $${${1}_BUILD}/${1}
+    $${${1}_INSTALLDIR}/$(notdir ${1}): $${${1}_BUILD}/${1} | $${${1}_INSTALLDIR}
        @$(ECHO) INSTALL ${1}
-       $(Q)$${PROGRAM_INSTALL} -d -m 755 $${${1}_INSTALLDIR}
        $(Q)$${PROGRAM_INSTALL} -c -m 755 $${BUILD_DIR}/bin/${1} $${${1}_INSTALLDIR}/
        $(Q)$${${1}_POSTINSTALL}
 
@@ -66,9 +65,8 @@ define ADD_INSTALL_RULE.a
     install: $${${1}_INSTALLDIR}/$(notdir ${1})
 
     # Install static library ${1}
-    $${${1}_INSTALLDIR}/$(notdir ${1}): ${1}
+    $${${1}_INSTALLDIR}/$(notdir ${1}): ${1} | $${${1}_INSTALLDIR}
        @$(ECHO) INSTALL ${1}
-       $(Q)$${PROGRAM_INSTALL} -d -m 755 $${${1}_INSTALLDIR}
        $(Q)$${PROGRAM_INSTALL} -c -m 755 $${BUILD_DIR}/lib/${1} $${${1}_INSTALLDIR}/
        $(Q)$${${1}_POSTINSTALL}
 
@@ -89,9 +87,8 @@ define ADD_INSTALL_RULE.la
     install: $${${1}_INSTALLDIR}/$(notdir ${1})
 
     # Install libtool library ${1}
-    $${${1}_INSTALLDIR}/$(notdir ${1}): $${${1}_BUILD}/${1}
+    $${${1}_INSTALLDIR}/$(notdir ${1}): $${${1}_BUILD}/${1} | $${${1}_INSTALLDIR}
        @$(ECHO) INSTALL ${1}
-       $(Q)$${PROGRAM_INSTALL} -d -m 755 $${${1}_INSTALLDIR}
        $(Q)$${PROGRAM_INSTALL} -c -m 755 $${LOCAL_FLAGS_MIN} $${BUILD_DIR}/lib/${1} $${${1}_INSTALLDIR}/
        $(Q)$${${1}_POSTINSTALL}
 
@@ -110,14 +107,27 @@ define ADD_INSTALL_RULE.man
     install: ${2}/$(notdir ${1})
 
     # Install manual page ${1}
-    ${2}/$(notdir ${1}): ${1}
+    ${2}/$(notdir ${1}): ${1} | ${2}
        @$(ECHO) INSTALL $(notdir ${1})
-       $(Q)[ -d ${2} ] || $${PROGRAM_INSTALL} -d -m 755 ${2}
        $(Q)$${PROGRAM_INSTALL} -c -m 644 ${1} ${2}/
 
 endef
 
 
+# ADD_INSTALL_RULE.dir - Parameterized "function" that adds a new rule
+#   and phony target for installing a directory
+#
+#   USE WITH EVAL
+#
+define ADD_INSTALL_RULE.dir
+    # Install directory
+    .PHONY: ${1}
+    ${1}:
+       @$(ECHO) INSTALL -d -m 755 ${1}
+       $(Q)$${PROGRAM_INSTALL} -d -m 755 ${1}
+endef
+
+
 # ADD_INSTALL_TARGET - Parameterized "function" that adds a new rule
 #   which installs everything for the target.
 #
index 40f9cd8..e991bf7 100644 (file)
@@ -1,5 +1,5 @@
-install: install.sbindir $(R)$(sbindir)/checkrad
+install: $(R)$(sbindir)/checkrad
 
-$(R)$(sbindir)/checkrad: src/main/checkrad
+$(R)$(sbindir)/checkrad: src/main/checkrad | $(R)$(sbindir)
        @echo INSTALL $(notdir $<)
        @$(INSTALL) -m 755 $< $(R)$(sbindir)
index 3823c96..766ce1f 100644 (file)
@@ -1,5 +1,5 @@
-install: install.bindir $(R)$(bindir)/radlast
+install: $(R)$(bindir)/radlast
 
-$(R)$(bindir)/radlast: src/main/radlast
+$(R)$(bindir)/radlast: src/main/radlast | $(R)$(bindir)
        @echo INSTALL $(notdir $<)
        @$(INSTALL) -m 755 $< $(R)$(bindir)
index 1941997..3adc133 100644 (file)
@@ -1,5 +1,5 @@
-install: install.bindir $(R)$(bindir)/radtest
+install: $(R)$(bindir)/radtest
 
-$(R)$(bindir)/radtest: src/main/radtest
+$(R)$(bindir)/radtest: src/main/radtest | $(R)$(bindir)
        @echo INSTALL $(notdir $<)
        @$(INSTALL) -m 755 $< $(R)$(bindir)
index 44d8d4a..bd0eb6d 100644 (file)
@@ -1,5 +1,5 @@
-install: install.bindir $(R)$(bindir)/radzap
+install: $(R)$(bindir)/radzap
 
-$(R)$(bindir)/radzap: src/main/radzap
+$(R)$(bindir)/radzap: src/main/radzap | $(R)$(bindir)
        @echo INSTALL $(notdir $<)
        @$(INSTALL) -m 755 $< $(R)$(bindir)
index 0da346f..5570dd4 100644 (file)
@@ -10,8 +10,8 @@ SRC_CFLAGS    := @mod_cflags@
 TGT_LDLIBS     := @mod_ldflags@
 
 ifneq "$(TARGETNAME)" ""
-install: install.bindir $(R)$(bindir)/rad_counter
+install: $(R)$(bindir)/rad_counter
 
-$(R)$(bindir)/rad_counter: src/modules/rlm_counter/rad_counter
+$(R)$(bindir)/rad_counter: src/modules/rlm_counter/rad_counter | $(R)$(bindir)
        @$(INSTALL) -m 755 src/modules/rlm_counter/rad_counter $(R)$(bindir)/
 endif