summaryrefslogtreecommitdiff
path: root/mail/prom-mew/files/byte-compile
blob: 6f589cb7a25f5c960b766f75f5ab7f963a266047 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/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 *.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)
	load_path=${PREFIX}/share/emacs/19.34/${load_el}
	emacscmd=emacs
	;;
    emacs20)
	load_path=${PREFIX}/share/emacs/20.3/${load_el}
	emacscmd=emacs20
	;;
    mule)
	load_path=${PREFIX}/share/mule/19.34/${load_el}
	emacscmd=mule
	;;
    xemacs19)
	load_path=${PREFIX}/lib/xemacs-19.16/${load_el}
	emacscmd=xemacs
	;;
    xemacs20)
	load_path=${PREFIX}/lib/xemacs-20.4/${load_el}
	emacscmd=xemacs
	;;
    xemacs21)
	load_path=${PREFIX}/lib/xemacs-21.1.4/${load_el}
	pkg_path=${PREFIX}/lib/xemacs/site-packages
	emacscmd=xemacs
	;;
    xemacs-mule)
	load_path=${PREFIX}/lib/xemacs/xemacs-packages/lisp/${load_el}
	pkg_path=${PREFIX}/lib/xemacs/site-packages
	emacscmd=xemacs
	;;
    *)
	echo "${Usage}"
	exit 1
	;;
esac
if [ -n "${load_el}" ]; then
    echo "(setq load-path (cons \"${load_path}\" load-path))" > /tmp/${tmprfx}:load.el
fi
cp ${pkg_path}/pkginfo/MANIFEST.${port_name} ${pkg_path}/pkginfo/MANIFEST.${port_name}.bak
for f in ${files}; do
    if [ -f ${WRKDIR}/${f} ]; then
	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 [ $? -eq 0 -a -d ${pkg_path}/lisp/${port_name} ]; then
	    rm -f ${pkg_path}/lisp/${port_name}/${f}.elc
	    ln -s ${WRKDIR}/${f}.elc ${pkg_path}/lisp/${port_name}/${f}.elc
	    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}
	else
	    cp ${pkg_path}/pkginfo/MANIFEST.${port_name} /tmp/${tmprfx}:tempfile
	    grep -v "${f}.elc" /tmp/${tmprfx}:tempfile \
		> ${pkg_path}/pkginfo/MANIFEST.${port_name}
	    rm -f ${pkg_path}/lisp/${port_name}/${f}.elc
	fi
    else
	echo "\"${WRKDIR}/${f}\": file not found!"
    fi
done

rm -f /tmp/${tmprfx}:load.el ${pkg_path}/pkginfo/MANIFEST.${port_name}.bak