another update from CVS HEAD, for QA
[alioth/jupp.git] / Make-w32.sh
1 #!/bin/mksh
2 # $MirOS: contrib/code/jupp/Make-w32.sh,v 1.21 2017/12/07 01:00:30 tg Exp $
3
4 usage() {
5         print -ru2 "Usage: $0 [-bCgn]"
6         print -ru2 '    Builds jupp32 (with debugging if -g): clean (unless -n),'
7         print -ru2 '    configure (unless -n), make, package (unless -b), clean (unless -C)'
8         exit 1
9 }
10
11 nopkg=0
12 nocln=0
13 debug=0
14 contb=0
15 while getopts "bCgn" c; do
16         case $c {
17         (b)     nopkg=1 ;;
18         (C)     nocln=1 ;;
19         (g)     debug=1 ;;
20         (n)     contb=1 ;;
21         (*)     usage ;;
22         }
23 done
24
25 extrawarnings="-Wall -Wextra"
26 (( debug )) && extrawarnings="$extrawarnings -g3"
27 extrawarnings="$extrawarnings -Wno-unused-parameter -Wno-cast-qual"
28 extrawarnings="$extrawarnings -Wno-strict-prototypes"
29
30 export LC_ALL=C
31 set -ex
32 [[ -s configure && -s jupprc && -s charmaps/klingon.in ]]
33
34 jupp=$(sed -n "/^PACKAGE_VERSION='3\.1jupp\([0-9]*\)[~'].*\$/s//\1/p" configure)
35 jwin=
36 while (( jupp > 34 )); do
37         jwin=${jwin}z
38         (( jupp -= 25 ))
39 done
40 typeset -i1 tmp
41 (( tmp = 1#a - 10 + jupp ))
42 jwin=$jwin${tmp#1#}
43 jtop=jwin31$jwin
44 typeset -u jWIN=$jwin
45
46 if (( contb )); then
47         [[ -s mkw32/build/Makefile ]]
48 else
49         rm -rf mkw32 JWIN31$jWIN.*
50         mkdir mkw32{,/{build,$jtop}}
51 fi
52 date >>JWIN31$jWIN.log
53 cd mkw32/build
54 export CFLAGS='-Os -march=i486 -mtune=pentium-mmx'
55 export CPPFLAGS='-DJUPPRC_BUILTIN_NAME=\"jupp32rc\"'
56 (( contb )) || mksh ../../configure \
57     --prefix=c:/windows/system32 \
58     --sysconfdir=c:/windows/system32 \
59     --disable-dependency-tracking \
60     --disable-terminfo \
61     --disable-search-libs \
62     --disable-getpwnam \
63     --disable-termidx \
64     --enable-win32reloc | tee -a ../../JWIN31$jWIN.log
65 make AM_CFLAGS="$extrawarnings" | tee -a ../../JWIN31$jWIN.log
66 if (( nopkg )); then
67         ln -f joe.exe jupp.exe
68         ln -sf ../../jupprc .
69         exit 0
70 fi
71 cp charmaps/* syntax/* ../$jtop/
72 cp jmacsrc joerc jpicorc jstarrc ../$jtop/
73 cp joe.exe ../$jtop/jupp32.exe
74 cd ../..
75 cp COPYING mkw32/$jtop/copying.txt
76 cp /bin/cygwin1.dll mkw32/$jtop/
77 cp joe.txt mkw32/$jtop/jupp32.txt
78 cp jupprc mkw32/$jtop/jupp32rc
79 cd mkw32/$jtop
80 :>setup.inf
81 for x in *; do
82         [[ $x = *[A-Z]* ]] || continue
83         mv "$x" ../_TMP
84         typeset -l lc
85         lc=$x
86         mv ../_TMP "$lc"
87 done
88 sed -b -e "s!@jwin@!$jupp!g" -e "s!@ts@!$(date -u +%m/%d/%Y)!g" \
89     <../../setup.inf | while IFS= read -r line; do
90         if [[ $line = '@files@'* ]]; then
91                 stat -c '%n=1,,%s\r' *
92         else
93                 print -r -- "$line"
94         fi
95 done >setup.inf
96 sed -bi "/^setup.inf=1,,/s/^.*\$/$(stat -c '%n=1,,%s\r' setup.inf)/" setup.inf
97 sed -bi "/^setup.inf=1,,/s/^.*\$/$(stat -c '%n=1,,%s\r' setup.inf)/" setup.inf
98 chmod 444 *
99 cd ..
100 zip -D -X -9 -k ../JWIN31$jWIN.ZIP $jtop/*
101 cd ..
102 ls -l JWIN31$jWIN.*
103 (( nocln )) || rm -rf mkw32