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