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 # Don’t 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 "$@" }