/MirOS/dist/jupp/joe-3.1jupp30.tgz
[alioth/jupp.git] / Make-w32.sh
1 #!/bin/mksh
2 # $MirOS: contrib/code/jupp/Make-w32.sh,v 1.14 2017/01/11 21:23:52 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"
28 echo "N: gcc-3.4.4-999 does not support -Wno-missing-field-initializers"
29 echo "N: expect warnings about those, they are known, do not report them"
30 extrawarnings="$extrawarnings -Wno-old-style-definition -Wno-strict-prototypes"
31 extrawarnings="$extrawarnings -Wno-cast-qual"
32 extrawarnings="$extrawarnings -Wno-missing-prototypes -Wno-missing-declarations"
33
34 export LC_ALL=C
35 set -ex
36 [[ -s configure && -s jupprc && -s charmaps/klingon.in ]]
37
38 jupp=$(sed -n "/^PACKAGE_VERSION='3\.1jupp\([0-9]*\)[~'].*\$/s//\1/p" configure)
39 jwin=
40 while (( jupp > 34 )); do
41         jwin=${jwin}z
42         (( jupp -= 25 ))
43 done
44 typeset -i1 tmp
45 (( tmp = 1#a - 10 + jupp ))
46 jwin=$jwin${tmp#1#}
47 jtop=jwin31$jwin
48 typeset -u jWIN=$jwin
49
50 if (( contb )); then
51         [[ -s mkw32/build/Makefile ]]
52 else
53         rm -rf mkw32
54         mkdir mkw32{,/{build,$jtop}}
55 fi
56 cd mkw32/build
57 export CFLAGS='-Os -march=i486 -mtune=pentium-mmx'
58 export CPPFLAGS='-DJUPPRC_BUILTIN_NAME=\"jupp32rc\"'
59 (( contb )) || mksh ../../configure \
60     --prefix=c:/windows/system32 \
61     --sysconfdir=c:/windows/system32 \
62     --disable-dependency-tracking \
63     --disable-curses \
64     --disable-termcap \
65     --disable-search-libs \
66     --disable-getpwnam \
67     --disable-termidx \
68     --enable-win32reloc
69 make AM_CFLAGS="$extrawarnings"
70 if (( nopkg )); then
71         ln -f joe.exe jupp.exe
72         ln -sf ../../jupprc .
73         exit 0
74 fi
75 cp charmaps/* syntax/* ../$jtop/
76 cp jmacsrc joerc jpicorc jstarrc ../$jtop/
77 cp joe.exe ../$jtop/jupp32.exe
78 cd ../..
79 cp COPYING mkw32/$jtop/copying.txt
80 cp /bin/cygwin1.dll mkw32/$jtop/
81 cp joe.txt mkw32/$jtop/jupp32.txt
82 cp jupprc mkw32/$jtop/jupp32rc
83 cd mkw32/$jtop
84 :>setup.inf
85 for x in *; do
86         [[ $x = *[A-Z]* ]] || continue
87         mv "$x" ../_TMP
88         typeset -l lc
89         lc=$x
90         mv ../_TMP "$lc"
91 done
92 sed -b -e "s!@jwin@!$jupp!g" -e "s!@ts@!$(date -u +%m/%d/%Y)!g" \
93     <../../setup.inf | while IFS= read -r line; do
94         if [[ $line = '@files@'* ]]; then
95                 stat -c '%n=1,,%s\r' *
96         else
97                 print -r -- "$line"
98         fi
99 done >setup.inf
100 sed -bi "/^setup.inf=1,,/s/^.*\$/$(stat -c '%n=1,,%s\r' setup.inf)/" setup.inf
101 sed -bi "/^setup.inf=1,,/s/^.*\$/$(stat -c '%n=1,,%s\r' setup.inf)/" setup.inf
102 chmod 444 *
103 cd ..
104 zip -D -X -9 -k ../JWIN31$jWIN.ZIP $jtop/*
105 cd ..
106 ls -l JWIN31$jWIN.ZIP
107 (( nocln )) || rm -rf mkw32