diff options
Diffstat (limited to 'mail/prom-wl/files/byte-compile')
-rw-r--r-- | mail/prom-wl/files/byte-compile | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/mail/prom-wl/files/byte-compile b/mail/prom-wl/files/byte-compile new file mode 100644 index 000000000000..48bcc77a10fc --- /dev/null +++ b/mail/prom-wl/files/byte-compile @@ -0,0 +1,139 @@ +#!/bin/sh + +PREFIX=${PREFIX:-/usr/local} +WRKDIR=${WRKDIR:-`pwd`} + +tmprfx=`basename $0` + +Usage="\ +byte_compile [options] emacs_name port_name [files] + -l load_el : load *.el file when byte-compile + -h : show this message + emacs_name : should be one of below + \"emacs\", \"emacs20\", \"mule\", \"xemacs19\", \"xemacs20\", + \"xemacs21\", \"xemacs-mule\" + port_name : port name(replaced port_name.el when files not specified) + files : *.el files should be compiled" + +while [ -z "`getopts "l: h" opt > /tmp/${tmprfx}:getopt_err.log`" \ + -a X"${opt}" != "X?" ]; do + case ${opt} in + l) + load_el=${OPTARG} + break + ;; + h) + echo "${Usage}" + exit 1 + ;; + *) + ;; + esac +# echo "opt=${opt},OPTARG=${OPTARG}" +done + +if [ -s /tmp/${tmprfx}:getopt_err.log ]; then + cat /tmp/${tmprfx}:getopt_err.log + rm -f /tmp/${tmprfx}:getopt_err.log + exit 1 +fi +rm -f /tmp/${tmprfx}:getopt_err.log + +shift `expr ${OPTIND} - 1` + +if [ -z "$1" -o -z "$2" ]; then + echo "${Usage}" + exit 1 +fi + +emacs_name=$1 +shift +port_name=$1 + +if [ $# -le 1 ]; then + files=${port_name}.el +else + files=`echo $* | sed -e "s/${port_name} *//"` +fi + +#echo "emacs_name=${emacs_name}" +#echo "port_name=${port_name}" +#echo "files=${files}" +#echo "load_el=${load_el}" +#exit 1 + +case ${emacs_name} in + emacs) + elispdir=${PREFIX}/share/emacs/site-lisp + load_path=${PREFIX}/share/emacs/site-lisp/${load_el} + emacscmd=emacs + ;; + emacs20) + elispdir=${PREFIX}/share/emacs/site-lisp + load_path=${PREFIX}/share/emacs/site-lisp/${load_el} + emacscmd=emacs20 + ;; + mule) + elispdir=${PREFIX}/share/mule/site-lisp + load_path=${PREFIX}/share/mule/site-lisp/${load_el} + emacscmd=mule + ;; + xemacs19) + elispdir=${PREFIX}/lib/xemacs/site-lisp + load_path=${PREFIX}/lib/xemacs/site-lisp/${load_el} + emacscmd=xemacs + ;; + xemacs20) + elispdir=${PREFIX}/lib/xemacs/site-lisp + load_path=${PREFIX}/lib/xemacs/site-lisp/${load_el} + emacscmd=xemacs + ;; + xemacs21) + elispdir=${PREFIX}/lib/xemacs/site-packages/lisp/${port_name} + load_path=${PREFIX}/lib/xemacs/site-packages/lisp/${load_el} + pkg_path=${PREFIX}/lib/xemacs/site-packages + emacscmd=xemacs + package_install=yes + ;; + xemacs-mule) + elispdir=${PREFIX}/lib/xemacs/site-packages/lisp/${port_name} + load_path=${PREFIX}/lib/xemacs/site-packages/lisp/${load_el} + pkg_path=${PREFIX}/lib/xemacs/site-packages + emacscmd=xemacs + package_install=yes + ;; + *) + echo "${Usage}" + exit 1 + ;; +esac +if [ -n "${load_el}" ]; then + echo "(setq load-path (cons \"${load_path}\" load-path))" > /tmp/${tmprfx}:load.el +fi +for f in ${files}; do + if [ -f ${WRKDIR}/${f} ]; then + f_elc=`basename ${f} .el`.elc + if [ -n "${load_el}" ]; then + ${emacscmd} -batch -l /tmp/${tmprfx}:load.el -q -no-site-file \ + -f batch-byte-compile ${WRKDIR}/${f} + else + ${emacscmd} -batch -q -no-site-file -f batch-byte-compile ${WRKDIR}/${f} + fi + if [ X"${WRKDIR}" != "X${elispdir}" ]; then + rm -f ${elispdir}/${f_elc} + ln -sf ${WRKDIR}/${f} ${elispdir}/${f} + install -c -m 444 -g bin -o bin ${WRKDIR}/${f_elc} ${elispdir}/${f_elc} + rm -f ${WRKDIR}/${f_elc} + fi + if [ $? -eq 0 -a -n "${package_install}" ]; then + cp ${pkg_path}/pkginfo/MANIFEST.${port_name} /tmp/${tmprfx}:tempfile + grep -v "${f_elc}" /tmp/${tmprfx}:tempfile \ + > ${pkg_path}/pkginfo/MANIFEST.${port_name} + echo "lisp/${port_name}/${f_elc}" >> ${pkg_path}/pkginfo/MANIFEST.${port_name} + fi + else + echo "\"${WRKDIR}/${f}\": file not found!" + fi +done + +rm -f /tmp/${tmprfx}:load.el /tmp/${tmprfx}:tempfile |