mirror of
https://github.com/ldericher/autodoc.git
synced 2025-12-06 15:43:01 +00:00
do_build_system global function
This commit is contained in:
parent
d7f6a1fb8d
commit
66731ee148
3 changed files with 60 additions and 45 deletions
|
|
@ -7,6 +7,7 @@
|
||||||
g_bin="$(readlink -f "$(which "$0")")"
|
g_bin="$(readlink -f "$(which "$0")")"
|
||||||
g_lib=${g_bin/"bin"/"lib"}
|
g_lib=${g_bin/"bin"/"lib"}
|
||||||
declare -a g_build_systems
|
declare -a g_build_systems
|
||||||
|
declare -A g_build_systems_glob
|
||||||
|
|
||||||
#
|
#
|
||||||
# load base program
|
# load base program
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# compile a directory
|
|
||||||
do_compile() { # $1:DIR $2:OBJECT $3:DONE
|
|
||||||
# extract params
|
|
||||||
local dir="$1"
|
|
||||||
local object="$2"
|
|
||||||
local done="${3:-0}"
|
|
||||||
|
|
||||||
# build systems
|
|
||||||
for build_system in ${g_build_systems[@]}; do
|
|
||||||
try_${build_system} "${dir}" "${object}" \
|
|
||||||
&& local done="1"
|
|
||||||
done
|
|
||||||
|
|
||||||
# never leave $g_watchroot
|
|
||||||
if [ "${dir}" != "${g_watchroot}" ]; then
|
|
||||||
# search parent dir for more build instructions
|
|
||||||
do_compile "$(dirname "${dir}")" "${object}" "${done}"
|
|
||||||
|
|
||||||
elif [ "${done}" == "0" ]; then
|
|
||||||
# hit $g_watchroot
|
|
||||||
echo "No build instructions found!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# process an inotify event
|
# process an inotify event
|
||||||
do_handle() { # $1:FLAGS $2:OBJECT
|
do_handle() { # $1:FLAGS $2:OBJECT
|
||||||
# extract params
|
# extract params
|
||||||
|
|
@ -42,3 +18,55 @@ do_handle() { # $1:FLAGS $2:OBJECT
|
||||||
echo -n "'${object}': '${flags}' in '${dir}'. "
|
echo -n "'${object}': '${flags}' in '${dir}'. "
|
||||||
do_compile "${dir}" "${object}"
|
do_compile "${dir}" "${object}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# compile a directory
|
||||||
|
do_compile() { # $1:DIR $2:OBJECT $3:DONE
|
||||||
|
# extract params
|
||||||
|
local dir="$1"
|
||||||
|
local object="$2"
|
||||||
|
local done="${3:-0}"
|
||||||
|
|
||||||
|
# build systems
|
||||||
|
for build_system in ${g_build_systems[@]}; do
|
||||||
|
do_build_system "${build_system}" "${dir}" "${object}" \
|
||||||
|
&& local done="1"
|
||||||
|
done
|
||||||
|
|
||||||
|
# never leave $g_watchroot
|
||||||
|
if [ "${dir}" != "${g_watchroot}" ]; then
|
||||||
|
# search parent dir for more build instructions
|
||||||
|
do_compile "$(dirname "${dir}")" "${object}" "${done}"
|
||||||
|
|
||||||
|
elif [ "${done}" == "0" ]; then
|
||||||
|
# hit $g_watchroot
|
||||||
|
echo "No build instructions found!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# use given BUILD_SYSTEM to process an OBJECT from a DIRectory
|
||||||
|
do_build_system() { # $1:BUILD_SYSTEM $2:DIR $3:OBJECT
|
||||||
|
# extract params
|
||||||
|
local build_system="$1"
|
||||||
|
local dir="$2"
|
||||||
|
local object="$3"
|
||||||
|
|
||||||
|
# not done yet
|
||||||
|
local result=1
|
||||||
|
|
||||||
|
# get glob pattern for plugin
|
||||||
|
for glob in ${g_build_systems_glob[${build_system}]}; do
|
||||||
|
# match glob in directory
|
||||||
|
for file in "${dir}"/${glob}; do
|
||||||
|
# check file readability
|
||||||
|
if [ -r "${file}" ]; then
|
||||||
|
# actually call into build system
|
||||||
|
echo -n "Found '${file}': "
|
||||||
|
do_${build_system} "$(basename "${file}")" "${dir}" "${object}" \
|
||||||
|
&& local result=0
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
return ${result}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,16 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# plugin name
|
||||||
g_build_systems+=(make)
|
g_build_systems+=(make)
|
||||||
|
|
||||||
|
# build instruction file globs for this plugin
|
||||||
|
g_build_systems_glob[make]="Makefile *.mk"
|
||||||
|
|
||||||
# compile using bare make command
|
# compile using bare make command
|
||||||
do_make() { # $1:DIR $2:MAKEFILE $3:OBJECT
|
do_make() { # $1:MAKEFILE $2:DIR $3:OBJECT
|
||||||
# extract params
|
# extract params
|
||||||
local dir="$1"
|
local makefile="$1"
|
||||||
local makefile="$2"
|
local dir="$2"
|
||||||
local object="$3"
|
local object="$3"
|
||||||
|
|
||||||
# check Makefile 'source pattern'
|
# check Makefile 'source pattern'
|
||||||
|
|
@ -35,21 +39,3 @@ do_make() { # $1:DIR $2:MAKEFILE $3:OBJECT
|
||||||
|
|
||||||
return 0
|
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}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue