waf's bld rejects unknown extensions(registered extensions are '.c', '.o', '.obj', '.C', '.c++', '.cxx', '.cc', '.pc.in', '.cpp').
If you have following shell file named app-env.sh.in,
#!/bin/sh
export APP_HOME=@prefix@
# other settings
writing build rule as below.
bld(source='app-env.sh.in',
target='app-env.sh',
prefix=bld.env['PREFIX'],
features='subst')
target and features='subst'
are needed. Thanks to tanakh!