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