| Using SDL under Windows with the OpenWatcom compiler | |
| ==================================================== | |
| Prerequisites | |
| ------------- | |
| I have done the port under Windows XP Home with SP2 installed. Windows | |
| 2000 should also be working. I'm not so sure about ancient Windows NT, | |
| since only DirectX 3 is available there. Building should be possible, | |
| but running the compiled applications will probalbly fail with | |
| SDL_VIDEODRIVER=directx. The windib driver should work, though. | |
| To compile and use the SDL with Open Watcom you will need the following: | |
| - Open Watcom compiler. I used version 1.5. The environment variables | |
| PATH, WATCOM and INCLUDE need to be set appropriately - please consult | |
| the OpenWatcom documentation and instructions given during the | |
| installation of the compiler. | |
| My setup looks like this in owvars.bat: | |
| set WATCOM=C:\watcom | |
| set INCLUDE=%WATCOM%\h;%WATCOM%\h\nt | |
| set PATH=%PATH%;%WATCOM%\binnt;%WATCOM%\binw | |
| - A fairly recent DirectX SDK. The original unmodified DX8 SDK works, as | |
| well as the minimal DirectX 7 SDK from the Allegro download site | |
| (<http://alleg.sourceforge.net/files/dx70_min.zip>). | |
| - The SDL sources from Subversion | |
| - The file Watcom-Win32.zip (now available in Subversion) | |
| Building the Library | |
| -------------------- | |
| 1) In the SDL base directory extract the archive Watcom-Win32.zip. This | |
| creates a subdirectory named 'watcom'. | |
| 2) The makefile expects the environment variable DXDIR to be set to the | |
| base directory of a DirectX SDK. I have tried a stock DX8 SDK from | |
| Microsoft as well as the minimal DirectX 7 SDK from the Allegro | |
| download site. | |
| You can also edit the makefile directly and hard code your path to | |
| the SDK on your system. | |
| I have this in my setup: | |
| set DXDIR=D:\devel\DX8_SDK | |
| 3) Enter the watcom directory and run | |
| wmake sdl | |
| 4) All tests from the test directory are working and can be built by | |
| running | |
| wmake tests | |
| Notes: | |
| The makefile offers some options to tweak the way the library is built. | |
| You have at your disposal the option to build a static (default) | |
| library, or a DLL (with tgt=dll). You can also choose whether to build | |
| a Release (default) or a Debug version (with build=debug) of the tests | |
| and library. Please consult the usage comment at the top of the | |
| makefile for usage instructions. | |
| If you specify a test target (i.e. 'wmake tests' for all tests, or | |
| selected targets like 'wmake testgl testvidinfo testoverlay2'), the | |
| tests are always freshly compiled and linked. This is done to | |
| minimise hassle when switching between library versions (static vs. | |
| DLL), because they require subtly different options. | |
| Also, the test executables are put directly into the test directory, | |
| so they can find their data files. The clean target of the makefile | |
| removes the test executables and the SDL.dll file from the test | |
| directory. | |
| To use the library in your own projects with Open Watcom, you can use | |
| the way the tests are built as base of your own build environment. | |
| The library can also be built with the stack calling convention of the | |
| compiler (-6s instead of -6r). | |
| Test applications | |
| ----------------- | |
| I've tried to make all tests work. The following table gives an overview | |
| of the current status. | |
| Testname Status | |
| ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| checkkeys + | |
| graywin + | |
| loopwave + | |
| testalpha + | |
| testbitmap + | |
| testdyngl + | |
| testerror + | |
| testfile + | |
| testgamma + | |
| testgl + | |
| testhread + | |
| testiconv - (all failed) | |
| testkeys + | |
| testlock + | |
| testoverlay + (needs 'set SDL_VIDEODRIVER=directx') | |
| testoverlay2 + (needs 'set SDL_VIDEODRIVER=directx') | |
| testpalette + | |
| testplatform + | |
| testsem + | |
| testsprite + | |
| testtimer + | |
| testver + | |
| testvidinfo + | |
| testwin ? (fading doesn't seem right) | |
| testwm + | |
| torturethread + | |
| testcdrom + | |
| testjoystick not tested | |
| threadwin + | |
| testcursor + | |
| TODO | |
| ---- | |
| There is room for further improvement: | |
| - Test joystick functionality. | |
| - Investigate fading issue in 'testwin' test. | |
| - Fix the UTF-8 support. | |
| - Adapt the makefile/object file list to support more target systems | |
| - Use "#pragma aux" syntax for the CPU info functions. | |
| Questions and Comments | |
| ---------------------- | |
| Please direct any questions or comments to me: <mailto:macpete@gmx.de> | |
| Happy Coding! | |
| Marc Peter |