You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
1.9 KiB

package=service
version=0.1.0
variables+=(
LIBEXECDIR '$(PREFIX)/libexec'
SYSCONFDIR '/etc'
VARSTATEDIR '/var'
DATADIR '/srv'
)
targets=(service status gen-config get-port)
for target in service status gen-config get-port; do
type[$target]=crystal
sources[$target]=src/${target}.cr
depends[$target]=src/config.cr
done
targets+=(src/config.cr)
type[src/config.cr]=script
sources[src/config.cr]=src/config.cr.in
install[src/config.cr]=false
auto[src/config.cr]=true # Dont display it in `make help`.
chmod[src/config.cr]=0644
for file in services/*.spec; do
targets+=($file)
type[$file]=script
install[$file]='$(SHAREDIR)/services'
auto[$file]=true
chmod[$file]=0644
done
for file in templates/*.j2; do
targets+=($file)
type[$file]=script
install[$file]='$(SHAREDIR)/templates'
auto[$file]=true
chmod[$file]=0644
done
for file in utils/*; do
targets+=($file)
type[$file]=script
done
for file in doc/*; do
[[ "$file" =~ .*\.scd$ ]] || continue
targets+=(${file%.scd})
type[${file%.scd}]=scdoc
sources[${file%.scd}]=${file}
done
# FIXME: This should be upstreamed.
function script.install {
if [[ "false" = "${install[$target]}" ]]; then
ofile.install "$@"
else
binary.install "$@"
fi
}
install[status]='$(LIBEXECDIR)/service'
function scdoc.prelude {
for target in $targets; do
[[ "${type[$target]}" == "scdoc" ]] || continue
if [[ -z "${install[$target]}" ]]; then
local section="${file%.scd}"
section="${section#*.}"
install[$target]="\$(SHAREDIR)/man/man${section}"
fi
done
}
function SCD {
SED "$@" | sed 's|SED|SCD|'
}
function scdoc.build {
write "${target}: ${sources[$target]}"
write "\t@echo '$(SCD $target)'"
write "\t${Q}scdoc < ${sources[$target]} > $target || rm $target"
}
function scdoc.install {
script.install "$@"
}
function scdoc.uninstall {
script.uninstall "$@"
}
function scdoc.clean {
script.clean "$@"
}