| 1 | \r |
| 2 | Using SDL under Windows with the OpenWatcom compiler\r |
| 3 | ====================================================\r |
| 4 | \r |
| 5 | Prerequisites\r |
| 6 | -------------\r |
| 7 | \r |
| 8 | I have done the port under Windows XP Home with SP2 installed. Windows\r |
| 9 | 2000 should also be working. I'm not so sure about ancient Windows NT,\r |
| 10 | since only DirectX 3 is available there. Building should be possible,\r |
| 11 | but running the compiled applications will probalbly fail with\r |
| 12 | SDL_VIDEODRIVER=directx. The windib driver should work, though.\r |
| 13 | \r |
| 14 | To compile and use the SDL with Open Watcom you will need the following:\r |
| 15 | - Open Watcom compiler. I used version 1.5. The environment variables\r |
| 16 | PATH, WATCOM and INCLUDE need to be set appropriately - please consult\r |
| 17 | the OpenWatcom documentation and instructions given during the\r |
| 18 | installation of the compiler.\r |
| 19 | My setup looks like this in owvars.bat:\r |
| 20 | set WATCOM=C:\watcom\r |
| 21 | set INCLUDE=%WATCOM%\h;%WATCOM%\h\nt\r |
| 22 | set PATH=%PATH%;%WATCOM%\binnt;%WATCOM%\binw\r |
| 23 | - A fairly recent DirectX SDK. The original unmodified DX8 SDK works, as\r |
| 24 | well as the minimal DirectX 7 SDK from the Allegro download site\r |
| 25 | (<http://alleg.sourceforge.net/files/dx70_min.zip>).\r |
| 26 | - The SDL sources from Subversion\r |
| 27 | - The file Watcom-Win32.zip (now available in Subversion)\r |
| 28 | \r |
| 29 | \r |
| 30 | Building the Library\r |
| 31 | --------------------\r |
| 32 | \r |
| 33 | 1) In the SDL base directory extract the archive Watcom-Win32.zip. This\r |
| 34 | creates a subdirectory named 'watcom'.\r |
| 35 | 2) The makefile expects the environment variable DXDIR to be set to the\r |
| 36 | base directory of a DirectX SDK. I have tried a stock DX8 SDK from\r |
| 37 | Microsoft as well as the minimal DirectX 7 SDK from the Allegro\r |
| 38 | download site.\r |
| 39 | You can also edit the makefile directly and hard code your path to\r |
| 40 | the SDK on your system.\r |
| 41 | I have this in my setup:\r |
| 42 | set DXDIR=D:\devel\DX8_SDK\r |
| 43 | 3) Enter the watcom directory and run\r |
| 44 | wmake sdl\r |
| 45 | 4) All tests from the test directory are working and can be built by\r |
| 46 | running\r |
| 47 | wmake tests\r |
| 48 | \r |
| 49 | Notes:\r |
| 50 | \r |
| 51 | The makefile offers some options to tweak the way the library is built.\r |
| 52 | You have at your disposal the option to build a static (default)\r |
| 53 | library, or a DLL (with tgt=dll). You can also choose whether to build\r |
| 54 | a Release (default) or a Debug version (with build=debug) of the tests\r |
| 55 | and library. Please consult the usage comment at the top of the\r |
| 56 | makefile for usage instructions.\r |
| 57 | \r |
| 58 | If you specify a test target (i.e. 'wmake tests' for all tests, or\r |
| 59 | selected targets like 'wmake testgl testvidinfo testoverlay2'), the\r |
| 60 | tests are always freshly compiled and linked. This is done to\r |
| 61 | minimise hassle when switching between library versions (static vs.\r |
| 62 | DLL), because they require subtly different options.\r |
| 63 | Also, the test executables are put directly into the test directory,\r |
| 64 | so they can find their data files. The clean target of the makefile\r |
| 65 | removes the test executables and the SDL.dll file from the test\r |
| 66 | directory.\r |
| 67 | \r |
| 68 | To use the library in your own projects with Open Watcom, you can use\r |
| 69 | the way the tests are built as base of your own build environment.\r |
| 70 | \r |
| 71 | The library can also be built with the stack calling convention of the\r |
| 72 | compiler (-6s instead of -6r).\r |
| 73 | \r |
| 74 | \r |
| 75 | Test applications\r |
| 76 | -----------------\r |
| 77 | \r |
| 78 | I've tried to make all tests work. The following table gives an overview\r |
| 79 | of the current status.\r |
| 80 | \r |
| 81 | Testname Status\r |
| 82 | ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r |
| 83 | checkkeys +\r |
| 84 | graywin +\r |
| 85 | loopwave +\r |
| 86 | testalpha +\r |
| 87 | testbitmap +\r |
| 88 | testdyngl +\r |
| 89 | testerror +\r |
| 90 | testfile +\r |
| 91 | testgamma +\r |
| 92 | testgl +\r |
| 93 | testhread +\r |
| 94 | testiconv - (all failed)\r |
| 95 | testkeys +\r |
| 96 | testlock +\r |
| 97 | testoverlay + (needs 'set SDL_VIDEODRIVER=directx')\r |
| 98 | testoverlay2 + (needs 'set SDL_VIDEODRIVER=directx')\r |
| 99 | testpalette +\r |
| 100 | testplatform +\r |
| 101 | testsem +\r |
| 102 | testsprite +\r |
| 103 | testtimer +\r |
| 104 | testver +\r |
| 105 | testvidinfo +\r |
| 106 | testwin ? (fading doesn't seem right)\r |
| 107 | testwm +\r |
| 108 | torturethread +\r |
| 109 | testcdrom +\r |
| 110 | testjoystick not tested\r |
| 111 | threadwin +\r |
| 112 | testcursor +\r |
| 113 | \r |
| 114 | \r |
| 115 | TODO\r |
| 116 | ----\r |
| 117 | \r |
| 118 | There is room for further improvement:\r |
| 119 | - Test joystick functionality.\r |
| 120 | - Investigate fading issue in 'testwin' test.\r |
| 121 | - Fix the UTF-8 support.\r |
| 122 | - Adapt the makefile/object file list to support more target systems\r |
| 123 | - Use "#pragma aux" syntax for the CPU info functions.\r |
| 124 | \r |
| 125 | \r |
| 126 | Questions and Comments\r |
| 127 | ----------------------\r |
| 128 | \r |
| 129 | Please direct any questions or comments to me: <mailto:macpete@gmx.de>\r |
| 130 | \r |
| 131 | Happy Coding!\r |
| 132 | \r |
| 133 | Marc Peter\r |