1#!/bin/sh
2
3SASH=${SASH:-"sagittarius"}
4
5# merged from autogen.sh
6geninsn()
7{
8    case `pwd` in
9	*src) ;;
10	*) cd src ;;
11    esac
12    $SASH ./geninsn $1
13    cd ../
14}
15
16precomp()
17{
18    echo Generating compiled library files
19    cd src
20    $SASH genlib $1
21    echo generating instruction
22    geninsn $1
23
24    cd script
25    echo generating builtin keyword
26    $SASH builtin-keywords.scm
27    echo generating builtin symbol
28    $SASH builtin-symbols.scm
29    cd ..
30    # done :)
31}
32
33stub()
34{
35    echo Generating library from stub
36    cd src
37    $SASH -L../sitelib ./genstub $1
38    cd ../
39}
40
41srfi()
42{
43    echo Generating R7RS style SRFI libraries
44    $SASH -L./sitelib ./script/r7rs-srfi-gen.scm -p ./ext -p ./sitelib/srfi $1
45}
46
47tzdata()
48{
49    echo Generating TZ database
50    $SASH ./script/compile-tzdatabase.scm \
51	-o ext/time/sagittarius/tzdata.scm \
52	-w ext/time/sagittarius/win-mappings.scm \
53	-l ext/time/sagittarius/leap-table.scm \
54	-r $1
55}
56
57unicode()
58{
59    echo Generating Unicode codepoints
60    $SASH ./script/compile-unicode.scm $1
61}
62
63dist() {
64    if [ $# -ne 1 ]; then
65	echo Usage: $0 src-dir
66	exit -1
67    fi
68
69    SRC_DIR=$1
70
71# check current directory
72    PWD=`pwd`
73    if [ ${PWD} = ${SRC_DIR} ]; then
74	echo $0 must be run with out-of-tree build
75	exit -2
76    fi
77
78    if [ -e ./build/sagittarius ]; then
79	version=`./build/sagittarius -v | perl -e 'while (<>) {if ($_ =~ /version ([\d\.]+)?/) {print $1;}}'`
80    else
81	echo ERROR: sagittarius does not exist.
82	exit -3
83    fi
84
85    DIST_NAME=sagittarius-${version}
86
87# remove tar file if exists
88    if [ -e ${DIST_NAME} ]; then
89	rm -rf ${DIST_NAME}
90    fi
91
92# copy to tmp directory
93    mkdir ${DIST_NAME}
94# use rsync to exclude .hg stuff
95# I hope this command exists any where...
96    rsync -r --exclude='.hg*' --exclude="bitbucket-pipelines.yml" ${SRC_DIR}/* ${DIST_NAME}
97
98    tar -czvf ${DIST_NAME}.tar.gz ${DIST_NAME}
99
100# clean up
101    rm -rf ${DIST_NAME}
102
103    echo ${version} > latest-version.txt
104    echo done!
105}
106
107usage()
108{
109    echo "usage: $0 dist|precomp|stub|stub|srfi|tz|clean"
110    echo "    dist:       creates distribution file"
111    echo "    gen:        generates all files"
112    echo "    precomp:    generates precompiled files"
113    echo "    insn:       generates VM instructions"
114    echo "    stub:       generates stub files"
115    echo "    srfi:       generates R7RS style SRFI libraries"
116    echo "    tz:         generates TZ database"
117    echo "    unicode:    generates Unicode code points"
118    echo "    clean:      cleans generated files"
119}
120
121
122if [ $# -ge 1 ] ; then
123    # must be dist
124    name=$1
125    shift
126    case $name in
127	dist)    dist $1;;
128	stub)    stub $1;;
129	gen)     stub $1; precomp $1; srfi; tzdata; unicode;;
130	srfi)    srfi $1;;
131	tz)      tzdata $1;;
132	unicode) unicode $1;;
133	precomp) precomp $1;;
134	clean)
135	    stub "-c"; precomp "-c"; srfi "-c" ;
136	    tzdata "-c"; unicode "-c";;
137	insn)    geninsn $1;;
138	*)       usage ;;
139    esac
140else
141    usage
142fi
143