diff --git a/build/usr/local/bin/autodoc b/build/usr/local/bin/autodoc index 7a643db..0ceaf32 100755 --- a/build/usr/local/bin/autodoc +++ b/build/usr/local/bin/autodoc @@ -6,6 +6,7 @@ g_bin="$(readlink -f "$(which "$0")")" g_lib=${g_bin/"bin"/"lib"} +declare -a g_plugins # # load base program diff --git a/build/usr/local/lib/autodoc/handle_inotify b/build/usr/local/lib/autodoc/handle_inotify index 4146201..d199ff2 100644 --- a/build/usr/local/lib/autodoc/handle_inotify +++ b/build/usr/local/lib/autodoc/handle_inotify @@ -7,13 +7,11 @@ do_compile() { # $1:DIR $2:OBJECT $3:DONE local object="$2" local done="${3:-0}" - # build systems - if [ -r "${dir}/Makefile" ]; then - # Makefile found - echo -n "Found '${dir}/Makefile': " - do_make "${dir}" "Makefile" "${object}" \ + # build plugins + for plugin in ${g_plugins[@]}; do + try_${plugin} "${dir}" "${object}" \ && local done="1" - fi + done # never leave $g_watchroot if [ "${dir}" != "${g_watchroot}" ]; then diff --git a/build/usr/local/lib/autodoc/plugin_make b/build/usr/local/lib/autodoc/plugin_make index b9d215a..7b4d1d1 100644 --- a/build/usr/local/lib/autodoc/plugin_make +++ b/build/usr/local/lib/autodoc/plugin_make @@ -1,5 +1,7 @@ #!/bin/bash +g_plugins+=(make) + # compile using bare make command do_make() { # $1:DIR $2:MAKEFILE $3:OBJECT # extract params @@ -24,7 +26,7 @@ do_make() { # $1:DIR $2:MAKEFILE $3:OBJECT echo "Making '${target}'. " fi - make --no-print-directory -C "${dir}" -j ${target} + make --no-print-directory -C "${dir}" -f "${makefile}" -j ${target} else echo -n "SRCPAT '${srcpat}' mismatch. " @@ -33,3 +35,21 @@ do_make() { # $1:DIR $2:MAKEFILE $3:OBJECT return 0 } + +try_make() { # $1:DIR $2:OBJECT + # extract params + local dir="$1" + local object="$2" + local retval=1 + + for FILE in "${dir}"/Makefile "${dir}"/*.mk; do + if [ -r "${FILE}" ]; then + echo -n "Found '${FILE}': " + do_make "${dir}" "$(basename "${FILE}")" "${object}" \ + && local retval=0 + echo "" + fi + done + + return ${retval} +}