| |
| XZ Utils on DOS |
| =============== |
| |
| Introduction |
| |
| This document explains how to build XZ Utils for DOS using DJGPP. |
| The resulting binaries should run at least on various DOS versions |
| and under Windows 95/98/98SE/ME, which cannot run the Windows version |
| of XZ Utils. |
| |
| This is currently experimental and has got very little testing. |
| |
| |
| Getting and Installing DJGPP |
| |
| You may use <http://www.delorie.com/djgpp/zip-picker.html> to help |
| deciding what to download, but as of writing (2009-02-13) that may |
| not be the most convenient way taking into account what components |
| are actually required to build XZ Utils. However, using the |
| zip-picker can still be worth doing to get nice short summary of |
| installation instructions (they can be found from readme.1st too). |
| |
| For more manual method, first select a mirror from |
| <http://www.delorie.com/djgpp/getting.html>. You need |
| the following files: |
| |
| unzip32.exe |
| beta/v2/djdev204.zip |
| v2gnu/bnu219b.zip |
| v2gnu/gcc432b.zip |
| v2gnu/mak3791b.zip |
| v2gnu/sed415b.zip |
| v2misc/csdpmi5b.zip |
| |
| If newer versions are available, probably you should try them first. |
| Note that djdev203.zip is too old to build XZ Utils; you need at |
| least djdev204.zip. Also note that you want csdpmi5b.zip even if you |
| run under Windows or DOSEMU, because the XZ Utils Makefile will embed |
| cwsdstub.exe to the resulting binaries. |
| |
| See the instructions in readme.1st found from djdev204.zip. Here's |
| a short summary, but you should still read readme.1st. |
| |
| C:\> mkdir DJGPP |
| C:\> cd DJGPP |
| C:\DJGPP> c:\download\unzip32 c:\download\djdev204.zip |
| C:\DJGPP> c:\download\unzip32 c:\download\bnu219b.zip |
| C:\DJGPP> c:\download\unzip32 c:\download\gcc432b.zip |
| C:\DJGPP> c:\download\unzip32 c:\download\mak3791b.zip |
| C:\DJGPP> c:\download\unzip32 c:\download\sed415b.zip |
| C:\DJGPP> c:\download\unzip32 c:\download\csdpmi5b.zip |
| |
| C:\DJGPP> set PATH=C:\DJGPP\BIN;%PATH% |
| C:\DJGPP> set DJGPP=C:\DJGPP\DJGPP.ENV |
| |
| You may want to add the last two lines into AUTOEXEC.BAT or have, |
| for example, DJGPP.BAT which you can run before using DJGPP. |
| |
| Make sure you use completely upper case path in the DJGPP environment |
| variable. This is not required by DJGPP, but the XZ Utils Makefile is |
| a bit stupid and expects that everything in DJGPP environment variable |
| is uppercase. |
| |
| |
| Building |
| |
| Just run "make" in this directory (the directory containing this |
| README). You should get liblzma.a, xz.exe, xzdec.exe, and |
| lzmadec.exe. Of these, probably xz.exe is the only interesting one. |
| |
| Note: You need to have an environment that supports long filenames. |
| Once you have built XZ Utils, the resulting binaries can be run |
| without long filename support. |
| |
| |
| Additional Make Flags and Targets |
| |
| You may want to try some additional optimizations, which may or |
| may not make the code faster (and may or may not hit possible |
| compiler bugs more easily): |
| |
| make CFLAGS="-O3 -fomit-frame-pointer -funroll-loops" |
| |
| If you want to enable assertions (the assert() macro), use DEBUG=1. |
| You may want to disable optimizations too if you plan to actually |
| debug the code. Never use DEBUG=1 for production builds! |
| |
| make DEBUG=1 CFLAGS="-g -O0" |
| |
| |
| Bugs |
| |
| "make clean" may remove src/xz/hardware.c when it tries to remove |
| src/xz/hardware-fixed.c. This is probably a bug somewhere in the |
| DOS environment I use. Maybe it tries truncated 8.3 name first and |
| since that gives a name of an existing file, it doesn't look for |
| long filename. |
| |
| "xz -fc /dev/tty" hangs at least in DOSEMU and cannot be interrupted |
| by pressing C-c. Maybe xz should never accept non-regular files on |
| DOS even when --force is used. |
| |
| Using different memory usage limit for encoding and decoding doesn't |
| make sense under pure DOS. Maybe it is still OK when running under |
| Windows. |
| |
| The progress indicator of "xz -v" doesn't get updated when running |
| under Dosbox, but it works in DOSEMU. I currently (2009-02-13) don't |
| know if it works in other environments. |
| |
| Report bugs to <lasse.collin@tukaani.org> (in English or Finnish). |
| |