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