On 2012-03-20 07:00 +0900, Miles Bader wrote:
> Is there a recommended way for dealing with binaries that are simple
> shell scripts in automake? I currently use something like the
> following:
>
> bin_PROGRAMS = myprog
>
> myprog_SOURCES = myprog.sh
> myprog: myprog.sh
>
> %: %.sh
> $(shbin_verbose)cp $< $@; chmod +x $@
Notwithstanding what others have already said, the above rule has some
issues of its own:
(1) If the "chmod" command fails: the failure will be noticed (make
will stop), but the target file has already been created at this
point. The target will thus be considered up-to-date on a
subsequent make run, despite the fact that it was not created
correctly.
(2) If the "cp" command fails: the chmod is still attempted, which may
succeed if the target file exists but is out-of-date. If chmod
succeeds, the failure will not be noticed by make, and the build
will continue using an out-of-date target.
Moreover, the use of GNU make-specific pattern rules here is pointless
because the same can be accomplished by a more portable single-suffix
rule.
Better to write it as follows:
SUFFIXES = .sh
.sh:
$(shbin_verbose) cp $< [email protected]
$(AM_V_at) chmod +x [email protected]
$(AM_V_at) mv -f [email protected] $@
Cheers,
--
Nick Bowler, Elliptic Technologies (http://www.elliptictech.com/)