Sync to HEAD
[bpt/emacs.git] / admin / nt / makedist.bat
1 @echo off
2
3 rem This batch file doesn't work with Cygwin tar because #files#
4 rem has DOS line endings, which Cygwin tar misinterprets.
5 rem I use the version of tar from
6 rem ftp://ftp.gnu.org/gnu/windows/emacs/utilities/i386/tar-1.11.2a.exe
7 rem renamed as wtar.exe.
8 set TAR=wtar
9
10 rem Make a copy of current Emacs source
11 if (%3) == () goto usage
12 if not (%4) == () goto %4
13 if not (%4) == (src) goto :lisp
14
15 :src
16
17 echo Create full source distribution, excluding leim
18 %TAR% --exclude leim --exclude _marker --exclude DOC --exclude DOC-X --exclude TAGS --exclude bin --exclude obj --exclude obj-spd --exclude oo --exclude oo-spd --exclude *~ --exclude *.rej -cvf - emacs-%1 | gzip -9 > %2-src.tar.gz
19 if not (%4) == () goto end
20
21 :lisp
22 echo Create limited elisp source distribution
23 %TAR% --exclude *.rej --exclude *.elc --exclude *~ -cvf - emacs-%1/lisp | gzip -9 > %2-lisp.tar.gz
24 if not (%4) == () goto end
25
26 :bin
27
28 set eld=emacs-%1/lisp
29
30 rem Keep this list in sync with the DONTCOMPILE list in lisp/Makefile.in
31
32 set elfiles=%eld%/cus-load.el %eld%/cus-start.el %eld%/emacs-lisp/cl-specs.el %eld%/eshell/esh-maint.el %eld%/eshell/esh-groups.el %eld%/finder-inf.el %eld%/forms-d2.el %eld%/forms-pass.el %eld%/generic-x.el %eld%/international/latin-1.el %eld%/international/latin-2.el %eld%/international/latin-3.el %eld%/international/latin-4.el %eld%/international/latin-5.el %eld%/international/latin-8.el %eld%/international/latin-9.el %eld%/international/mule-conf.el %eld%/loaddefs.el %eld%/loadup.el %eld%/mail/blessmail.el %eld%/patcomp.el %eld%/paths.el %eld%/play/bruce.el %eld%/subdirs.el %eld%/version.el
33
34 set fns_el=
35 for %%f in (emacs-%1/bin/fns*) do set fns_el=%fns_el% emacs-%1/bin/%%f
36
37 echo Create bin distribution
38 copy %3\README.W32 emacs-%1\README.W32
39
40 del #files#
41 for %%f in (emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32) do echo %%f>>#files#
42 for %%f in (emacs-%1/bin/fns*) do echo emacs-%1/bin/%%f>>#files#
43 for %%f in (emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp %elfiles%) do echo %%f>>#files#
44 for %%f in (%eld%/term/*.el) do echo %eld%/term/%%f>>#files#
45 for %%f in (emacs-%1/lock emacs-%1/site-lisp emacs-%1/site-lisp/subdirs.el) do echo %%f>>#files#
46 %TAR% --exclude temacs.exe --exclude emacs.mdp --exclude *.pdb --exclude *.opt --exclude *.el --exclude *~ -T #files# -cvf - | gzip -9 > %2-bin-i386.tar.gz
47 del emacs-%1\README.W32
48 del #files#
49 if not (%4) == () goto end
50
51 :fullbin
52
53 echo Create full bin distribution
54 copy %3\README.W32 emacs-%1\README.W32
55
56 %TAR% --exclude temacs.exe --exclude emacs.mdp --exclude *.pdb --exclude *.opt --exclude *~ -cvf - emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/lock emacs-%1/site-lisp | gzip -9 > %2-fullbin-i386.tar.gz
57 del emacs-%1\README.W32
58 if not (%4) == () goto end
59
60 :leim
61
62 echo Create archive with precompiled leim files
63 %TAR% -cvf - emacs-%1/leim/leim-list.el emacs-%1/leim/quail emacs-%1/leim/ja-dic | gzip -9 > %2-leim.tar.gz
64 if not (%4) == () goto end
65
66 :undumped
67
68 echo Create archive with extra files needed for redumping emacs
69 copy %3\README-UNDUMP.W32 emacs-%1\README-UNDUMP.W32
70 copy %3\dump.bat emacs-%1\bin
71 if exist emacs-%1\src\obj-spd\i386\temacs.exe copy emacs-%1\src\obj-spd\i386\temacs.exe emacs-%1\bin
72 if exist emacs-%1\src\oo-spd\i386\temacs.exe copy emacs-%1\src\oo-spd\i386\temacs.exe emacs-%1\bin
73 %TAR% -cvf - emacs-%1/README-UNDUMP.W32 emacs-%1/bin/dump.bat emacs-%1/bin/temacs.exe | gzip -9 > %2-undumped-i386.tar.gz
74 del emacs-%1\bin\temacs.exe
75 del emacs-%1\bin\dump.bat
76 del emacs-%1\README-UNDUMP.W32
77 if not (%4) == () goto end
78
79 :barebin
80
81 echo Create archive with just the basic binaries and generated files
82 echo (the user needs to unpack the full source distribution for
83 echo everything else)
84 copy %3\README.W32 emacs-%1\README.W32
85 %TAR% -cvf - emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc/DOC emacs-%1/etc/DOC-X | gzip -9 > %2-barebin-i386.tar.gz
86 del emacs-%1\README.W32
87 if not (%4) == () goto end
88
89 goto end
90
91 rem Only do this if explicitly requested
92 :zipfiles
93
94 echo Create zip files for bin and lisp archives
95 mkdir distrib
96 cd distrib
97 gunzip -c ..\%2-bin-i386.tar.gz | %TAR% xf -
98 rem Need to split emacs.exe into fragments because it is too big now
99 rem to fit on a floppy even by itself.
100 copy %3\stitch.bat %2\bin
101 cd %2\bin
102 split -b 1000000 emacs.exe emacs
103 del emacs.exe
104 cd ..\..
105 zip -rp9 em%5bin %2
106 rm -rf %2
107 zipsplit -n 1400000 -b .. em%5bin.zip
108 del em%5bin.zip
109 gunzip -c ..\%2-lisp.tar.gz | %TAR% xf -
110 zip -rp9 em%5lis %2
111 rm -rf %2
112 zipsplit -n 1400000 -b .. em%5lis.zip
113 del em%5lis.zip
114 cd ..
115
116 goto end
117
118 :usage
119 echo Generate source and binary distributions of emacs.
120 echo Usage: %0 emacs-version dist-basename distfiles [lisp,bin,undumped,barebin]
121 echo (e.g., %0 19.34 emacs-19.34.5 d:\andrewi\distfiles)
122 echo Or: %0 emacs-version dist-basename distfiles "zipfiles" short-version
123 echo (e.g., %0 20.6 emacs-20.6 d:\andrewi\distfiles zipfiles 206)
124 :end
125
126 goto skipArchTag
127 arch-tag: 6e2ddd92-c1c9-4992-b6b5-207aaab72f68
128 :skipArchTag