# shell-subcommands.mk: build shell scripts which implement
#			sub-commands of a program
# 
################################################################
# Copyright (C) 2001, 2002 Tom Lord
# 
# See the file "COPYING" for further information about
# the copyright and warranty status of this work.
# 



ifndef shell-subcommands-mk
shell-subcommands-mk	:= 1

# Already set upon entry: see "rules.mk".
# 
# Optionally set on entry:
# 
# 	$(shell-scripts)	source files, with the extension .sh,
# 				to turn into executable scripts.
# 
# 	$(cfg__posix_shell)	the program to use in "#!" lines
#				for shell scripts (default "/bin/sh")
# 
# This file creates executable programs from shell scripts.  These
# programs are created in the build directory and not installed.  (See
# "install-program.mk".)
#
# By default, shell-scripts is all files in the source directory with
# the extension "sh" and beginning with any of [a-zA-Z0-9].
#
# On `make all', the scripts are copied to the build directory,
# without the ".sh" extension, and chmoded to be executable by
# anyone.
#
# If the source file does not already have a first line beginning
# with "#!", then a line "#!/bin/sh" is added.
#
# In addition, files in the list:
# 
# 	shell-subcommand-help-source	:=	Help.category.in ...
#
# are copied to the build directory with .in stripped off.
#

ifndef shell-subcommands
shell-subcommands			:=	$(sort $(notdir $(wildcard $(srcdir)/[a-zA-Z0-9]*.sh)))
endif

ifndef subcommand-help-data
shell-subcommand-help-source		:=	$(notdir $(wildcard $(srcdir)/Help.*.in))
endif

shell-subcommand-names		:=	$(basename $(shell-subcommands))
shell-subcommand-help		:=	$(basename $(shell-subcommand-help-source))

ifndef cfg__posix_shell
cfg__posix_shell		:=	/bin/sh
endif

include $(makefiles)/rules.mk

all: $(shell-subcommand-names) $(shell-subcommand-help) Shell-subcommands Shell-subcommand-help

$(shell-subcommand-names):%:%.sh
	for f in $@ ; do test ! -e $$f || rm $$f ; done
	if test "`head -n 1 $< | sed -e 's/\(..\).*/\1/'`" != "#!" ; then echo "#!$(cfg__posix_shell)" ; fi > $@
	cat $< >> $@
	chmod ugo+x $@

$(shell-subcommand-help):%:%.in
	for f in $@ ; do test ! -e $$f || rm $$f ; done
	cp $< $@

Shell-subcommands: $(shell-subcommand-names)
	echo $(shell-subcommand-names) | sed -f $(makefiles)/column.sed > Shell-subcommands

Shell-subcommand-help: $(shell-subcommand-help)
	echo $(shell-subcommand-help) | sed -f $(makefiles)/column.sed > Shell-subcommand-help

clean: clean-shell-subcommands

clean-shell-subcommands:
	for f in $(shell-subcommand-names) Shell-subcommands $(shell-subcommand-help) Shell-subcommand-help ; do \
	  test ! -e $$f || rm $$f ; \
	done

endif

# arch-tag: Tom Lord Tue Dec  4 14:47:21 2001 (shell-subcommands.mk)
#
