Updates for new Windows build system.
[mesa.git] / docs / README.WIN32
1 File: docs/README.WIN32
2
3 Last updated: Jun 02, 2005 - Karl Schultz - kschultz@users.sourceforge.net
4
5 Quick Start
6 ----- -----
7
8 Unzip both ZIP files (MesaLib and MesaDemos) into the same directory.
9 The libs and demos build separately, so if you do not care about the
10 demos, you do not have to unzip that zip file. But if you do, it does
11 need to be unzipped into the same directory as the lib zip file
12 because the demos depend on the libs.
13
14 The Windows build system uses Microsoft Visual Studio. Project files
15 for a specific version of Visual Studio are in their own directory in
16 the top-level "windows" directory. For example, Visual Studio 6 files
17 are in windows/VC6. If a directory does not exist for your version of
18 Visual Studio, you can try importing the project files from an earlier
19 version of Visual Studio. At this time, project files exist for
20 Version 6.
21
22 The project files to build the core Mesa library, Windows Mesa
23 drivers, OSMesa, and GLU are in the mesa directory. The project files
24 to build GLUT and some demo programs are in the progs directory.
25
26 Makefiles are no longer shipped or supported, but can be generated
27 from the projects using Visual Studio.
28
29
30 Windows Drivers
31 ------- -------
32
33 At this time, only the GDI driver is known to work, as it has been
34 ported and rewritten to the latest Mesa DD interfaces. Source code
35 also exists in the tree for other drivers in src/mesa/drivers/windows,
36 but the status of this code is unknown.
37
38 The GDI driver operates basically by writing pixel spans into a DIB
39 section and then blitting the DIB to the window. The driver was
40 recently cleaned up and rewitten and so may have bugs or may be
41 missing some functionality. The older versions of the CVS source may
42 be useful in figuring out any problems, or report them to me.
43
44 To build Mesa with the GDI driver, build the mesa, gdi, and glu
45 projects in the Visual Studio workspace found at
46 windows/VC?/mesa/mesa.dsw. The osmesa DLL can also be built with the
47 osmesa project.
48
49 The build system creates a lib top-level directory and copies
50 resulting LIB and DLL files to this lib directory. The files are:
51
52 OPENGL32.LIB, GLU32.LIB, OSMESA32.LIB
53 OPENGL32.DLL, GLU32.DLL, OSMESA32.DLL
54
55 If the MesaDemos ZIP file was extracted, the DLL files are also copied
56 to the demos directory.
57
58
59 GLUT and Demos
60 ---- --- -----
61
62 A Visual Studio workspace can be found at windows/VC?/progs/progs.dsw.
63 It can be used to build GLUT and a few demos. The GLUT lib and DLL
64 are copied to the top-level lib directory, along with the Mesa libs.
65
66 The demo build system expects to find the LIB files in the top level
67 lib directory, so you must build the Mesa libs first. The demo
68 executables are placed in the demos directory, because some of them
69 rely on data files found there. Also, the Mesa lib DLL's were copied
70 there by the Mesa lib build process. Therefore, you should be able to
71 simply run the demo executables from the demo directory.
72
73
74
75 Build System Notes
76 ----- ------ -----
77
78 VC6
79 ---
80
81 Visual Studio 6 does not recognize files with the .cc extension as C++
82 language files, without a lot of unnatural tweaking. So, the VC6
83 build process uses custom build steps to compile these files in the
84 GLU library.
85
86
87 VC7
88 ---
89
90 Some users have reported problems building glu with VC7 after
91 importing and converting the VC6 project files. The problem is caused
92 by a custom build step that was put in place to work around a problem
93 with VC6 not recognizing .cc files as C++ source files. It appears
94 that VC7 can be configured to recognize .cc files as C++ files and so
95 it compiles these glu files with the default settings, and does not
96 use settings that are required to compile the files correctly. The
97 easiest way to solve the problem is to remove the .cc files from the
98 glu project. This does not delete the files, but removes them from
99 the project so that VS does not try to compile them at all. This
100 allows the custom build step to compile the files with the proper
101 settings. Another approach is to remove the custom build step and fix
102 the project up to compile the files normally.
103
104
105 General
106 -------
107
108 After building, you can copy the above DLL files to a place in your
109 PATH such as $SystemRoot/SYSTEM32. If you don't like putting things
110 in a system directory, place them in the same directory as the
111 executable(s). Be careful about accidentially overwriting files of
112 the same name in the SYSTEM32 directory.
113
114 The DLL files are built so that the external entry points use the
115 stdcall calling convention.
116
117 Static LIB files are not built. The LIB files that are built with are
118 the linker import files associated with the DLL files.
119
120 The si-glu sources are used to build the GLU libs. This was done
121 mainly to get the better tessellator code.
122
123 To build "mangled" Mesa, add the preprocessor define USE_MGL_NAMESPACE
124 to the project settings. You will also need to edit src/mesa.def to
125 change all the gl* symbols to mgl*. Because this is easy to do with a
126 global replace operation in a text editor, no additional mangled
127 version of mesa.def is maintained or shipped.
128
129 If you have a Windows-related build problem or question, it is
130 probably better to direct it to me (kschultz@users.sourceforge.net),
131 rather than directly to the other Mesa developers. I will help you as
132 much as I can. I also monitor the Mesa mailing lists and will answer
133 questions in this area there as well.
134
135
136 Karl Schultz