| |
| 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 |