1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 This file is generated from xml source: DO NOT EDIT
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 --><title>Compiling Apache for Microsoft Windows - Apache HTTP Server</title><link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /><link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /><link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link href="../images/favicon.ico" rel="shortcut icon" /></head><body id="manual-page"><div id="page-header"><p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p><p class="apache">Apache HTTP Server Version 2.0</p><img alt="" src="../images/feather.gif" /></div><div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div><div id="path"><a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs-project/">Documentation</a> > <a href="../">Version 2.0</a></div><div id="page-content"><div id="preamble"><h1>Compiling Apache for Microsoft Windows</h1>
9 <p>There are many important points before you begin compiling
10 Apache. See <a href="windows.html">Using Apache with Microsoft
11 Windows</a> before you begin.</p>
13 </div><div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#requirements">Requirements</a></li><li><img alt="" src="../images/down.gif" /> <a href="#commandbuild">Command-Line Build</a></li><li><img alt="" src="../images/down.gif" /> <a href="#workspacebuild">Developer Studio Workspace IDE Build</a></li><li><img alt="" src="../images/down.gif" /> <a href="#projectcomponents">Project Components</a></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="requirements" id="requirements">Requirements</a></h2>
17 <p>Compiling Apache requires the following environment to be
18 properly installed:</p>
23 <p>Make sure you have at least 50 MB of free disk space
24 available. After installation Apache requires approximately
25 10 MB of disk space, plus space for log and cache files,
26 which can grow rapidly. The actual disk space requirements
27 will vary considerably based on your chosen configuration and
28 any third-party modules or libraries.</p>
32 <p>Microsoft Visual C++ 5.0 or higher.</p>
33 <p>Apache can be built using the command line tools, or from
34 within the Visual Studio IDE Workbench. The command line
35 build requires the environment to reflect the <code>PATH</code>,
36 <code>INCLUDE</code>, <code>LIB</code> and other variables
37 that can be configured with the <code>vcvars32</code> batch file:</p>
39 <div class="example"><p><code>
40 "c:\Program Files\DevStudio\VC\Bin\vcvars32.bat"
45 <p>The Windows Platform SDK.</p>
46 <p>Visual C++ 5.0 builds require an updated Microsoft Windows
47 Platform SDK to enable some Apache features. For command line
48 builds, the Platform SDK environment is prepared by the
49 <code>setenv</code> batch file:</p>
51 <div class="example"><p><code>
52 "c:\Program Files\Platform SDK\setenv.bat"
55 <p>The Platform SDK files distributed with Visual C++ 6.0 and
56 later are sufficient, so users of later version may skip
59 <div class="note">Note that the Windows Platform SDK update is required
60 to enable all supported <code class="module"><a href="../mod/mod_isapi.html">mod_isapi</a></code> features.
61 Without a recent update, Apache will issue warnings under
62 MSVC++ 5.0 that some <code class="module"><a href="../mod/mod_isapi.html">mod_isapi</a></code> features
63 will be disabled. Look for the update at <a href="http://msdn.microsoft.com/downloads/sdks/platform/platform.asp">http://msdn.microsoft.com/downloads/sdks/platform/platform.asp</a>.</div>
67 <p>The awk utility (awk, gawk or similar).</p>
68 <p>To install Apache within the build system, several files are
69 modified using the <code>awk.exe</code> utility. awk was chosen since it
70 is a very small download (compared with Perl or WSH/VB) and
71 accomplishes the task of generating files. Brian Kernighan's
72 <a href="http://cm.bell-labs.com/cm/cs/who/bwk/">http://cm.bell-labs.com/cm/cs/who/bwk/</a>
73 site has a compiled native Win32 binary,
74 <a href="http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe">http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe</a> which
75 you must save with the name <code>awk.exe</code> rather than
76 <code>awk95.exe</code>.</p>
78 <div class="note">Note that Developer Studio IDE will only find
79 <code>awk.exe</code> from the Tools menu Options... Directories
80 tab (the Projects - VC++ Directories pane in Developer Studio 7.0)
81 listing Executable file paths. Add the path for <code>awk.exe</code>
82 to this list, and your system <code>PATH</code> environment variable,
85 <div class="note">Also note that if you are using Cygwin (<a href="http://www.cygwin.com/">http://www.cygwin.com/</a>) the awk utility is named <code>gawk.exe</code> and
86 that the file <code>awk.exe</code> is really a symlink to the <code>gawk.exe</code>
87 file. The Windows command shell does not recognize symlinks, and because of that
88 building InstallBin will fail. A workaround is to delete <code>awk.exe</code> from
89 the cygwin installation and rename <code>gawk.exe</code> to <code>awk.exe</code>.</div>
93 <p>[Optional] OpenSSL libraries (for <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>
94 and <code>ab.exe</code> with ssl support)</p>
95 <p><strong>Caution: there are significant restrictions and
96 prohibitions on the use and distribution of strong cryptography
97 and patented intellectual property throughout the world.</strong>
98 OpenSSL includes strong cryptography controlled by both export
99 regulations and domestic law, as well as intellectual property
100 protected by patent, in the United States and elsewhere. Neither
101 the Apache Software Foundation nor the OpenSSL project can provide
102 legal advise regarding possession, use, or distribution of the code
103 provided by the OpenSSL project. <strong>Consult your own legal
104 counsel, you are responsible for your own actions.</strong></p>
106 <p>OpenSSL must be installed into a <code>srclib</code> subdirectory named
107 <code>openssl</code>, obtained from <a href="http://www.openssl.org/source/">http://www.openssl.org/source/</a>, in order to compile <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>
108 or the abs project (<code>ab.exe</code> with SSL support.) To prepare OpenSSL
109 for both <code>release</code> and <code>debug</code> builds of Apache, and
110 disable the patent protected features in 0.9.6, you might use the following
113 <div class="example"><p><code>
114 perl util\mkfiles.pl >MINFO<br />
115 perl util\mk1mf.pl dll no-asm no-mdc2 no-rc5 no-idea VC-WIN32 >makefile<br />
116 perl util\mk1mf.pl dll debug no-asm no-mdc2 no-rc5 no-idea VC-WIN32 >makefile.dbg<br />
117 perl util\mkdef.pl 32 libeay no-asm no-mdc2 no-rc5 no-idea >ms\libeay32.def<br />
118 perl util\mkdef.pl 32 ssleay no-asm no-mdc2 no-rc5 no-idea >ms\ssleay32.def<br />
120 nmake -f makefile.dbg
126 <p>[Optional] zlib sources (for <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>)</p>
127 <p>Zlib must be installed into a <code>srclib</code> subdirectory named
128 <code>zlib</code>, however those sources need not be compiled. The build system
129 will compile the compression sources directly into the <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>
130 module. Zlib can be obtained from <a href="http://www.gzip.org/zlib/">http://www.gzip.org/zlib/</a> -- <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> is
131 confirmed to build correctly with version 1.1.4.</p>
136 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="commandbuild" id="commandbuild">Command-Line Build</a></h2>
140 <p>First, unpack the Apache distribution into an appropriate
141 directory. Open a command-line prompt and <code>cd</code> to that
144 <p>The master Apache makefile instructions are contained in the
145 <code>Makefile.win</code> file. To compile Apache on Windows
146 NT, simply use one of the following commands to compiled the
147 <code>release</code> or <code>debug</code> build, respectively:</p>
149 <div class="example"><pre>
150 nmake /f Makefile.win _apacher
152 nmake /f Makefile.win _apached
155 <p>Either command will compile Apache. The latter will include
156 debugging information in the resulting files, making it easier
157 to find bugs and track down problems.</p>
159 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="workspacebuild" id="workspacebuild">Developer Studio Workspace IDE Build</a></h2>
163 <p>Apache can also be compiled using VC++'s Visual Studio
164 development environment. To simplify this process, a
165 Visual Studio workspace, <code>Apache.dsw</code>, is provided.
166 This workspace exposes the entire list of working <code>.dsp</code>
167 projects that are required for the complete Apache binary release.
168 It includes dependencies between the projects to assure that they
169 are built in the appropriate order.</p>
171 <p>Open the <code>Apache.dsw</code> workspace, and select
172 <code>InstallBin</code> (<code>Release</code> or <code>Debug</code> build,
173 as desired) as the Active Project. <code>InstallBin</code> causes all
174 related project to be built, and then invokes <code>Makefile.win</code> to
175 move the compiled executables and dlls. You may personalize the
176 <code>INSTDIR=</code> choice by changing <code>InstallBin</code>'s Settings,
177 General tab, Build command line entry. <code>INSTDIR</code> defaults to the
178 <code>/Apache2</code> directory. If you only want a test compile (without
179 installing) you may build the <code>BuildBin</code> project instead.</p>
181 <p>The <code>.dsp</code> project files are distributed in Visual
182 C++ 6.0 format. Visual C++ 5.0 (97) will recognize them. Visual C++
183 7.0 (.net) must convert <code>Apache.dsw</code> plus the <code>.dsp</code>
184 files into an <code>Apache.sln</code> plus <code>.msproj</code> files,
185 be sure you reconvert the <code>.msproj</code> file if any of the source
186 <code>.dsp</code> files change! This is really trivial, just open
187 <code>Apache.dsw</code> in the VC++ 7.0 IDE once again.</p>
189 <p>Visual C++ 7.0 (.net) users should also use the Build
190 menu, Configuration Manager dialog to uncheck both the <code>Debug</code>
191 and <code>Release</code> Solution modules abs, <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>
192 and <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>.
193 These modules are built by invoking <code>nmake</code> or the IDE directly
194 with the <code>BinBuild</code> target to build those modules explicitly,
195 only if the <code>srclib</code> directories <code>openssl</code>
196 and/or <code>zlib</code> exist.</p>
198 <p>Exported <code>.mak</code> files pose a greater hassle, but they are
199 required for Visual C++ 5.0 users to build <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>,
200 abs (ab with SSL support) and/or <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code>.
201 VC++ 7.0 (.net) users also benefit, <code>nmake</code> builds
202 are faster than <code>binenv</code> builds.
203 Build the entire project from within the VC++ 5.0 or 6.0 IDE,
204 then use the Project Menu Export for all makefiles.
205 You must build the projects first in order to create all dynamic
206 auto-generated targets, so that dependencies can be parsed
207 correctly. Run the following command to fix the paths so they
208 will build anywhere:</p>
210 <div class="example"><p><code>
211 perl srclib\apr\build\fixwin32mak.pl
214 <p>You must type this command from the <em>top level</em>
215 directory of the <code>httpd</code> source tree. Every
216 <code>.mak</code> and <code>.dep</code> project file within
217 the current directory and below will be corrected, and the
218 timestamps adjusted to reflect the <code>.dsp</code>.</p>
220 <p>If you contribute back a patch that revises project files, we
221 must commit project files in Visual Studio 6.0 format. Changes
222 should be simple, with minimal compilation and linkage flags that
223 will be recognized by all VC++ 5.0 through 7.0 environments.</p>
225 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="projectcomponents" id="projectcomponents">Project Components</a></h2>
229 <p>The <code>Apache.dsw</code> workspace and <code>makefile.win</code>
230 <code>nmake</code> script both build the <code>.dsp</code> projects
231 of the Apache server in the following sequence:</p>
234 <li><code>srclib\apr\apr.dsp</code></li>
236 <li><code>srclib\apr\libapr.dsp</code></li>
238 <li><code>srclib\apr-util\uri\gen_uri_delims.dsp</code></li>
240 <li><code>srclib\apr-util\xml\expat\lib\xml.dsp</code></li>
242 <li><code>srclib\apr-util\aprutil.dsp</code></li>
244 <li><code>srclib\apr-util\libaprutil.dsp</code></li>
246 <li><code>srclib\pcre\dftables.dsp</code></li>
248 <li><code>srclib\pcre\pcre.dsp</code></li>
250 <li><code>srclib\pcre\pcreposix.dsp</code></li>
252 <li><code>server\gen_test_char.dsp</code></li>
254 <li><code>libhttpd.dsp</code></li>
256 <li><code>Apache.dsp</code></li>
259 <p>In addition, the <code>modules\</code> subdirectory tree contains
260 project files for the majority of the modules.</p>
262 <p>The <code>support\</code> directory contains project files for
263 additional programs that are not part of the Apache runtime,
264 but are used by the administrator to test Apache and maintain
265 password and log files. Windows-specific support projects are
266 broken out in the <code>support\win32\</code> directory.</p>
269 <li><code>support\ab.dsp</code></li>
271 <li><code>support\htdigest.dsp</code></li>
273 <li><code>support\htpasswd.dsp</code></li>
275 <li><code>support\logresolve.dsp</code></li>
277 <li><code>support\rotatelogs.dsp</code></li>
279 <li><code>support\win32\ApacheMonitor.dsp</code></li>
281 <li><code>support\win32\wintty.dsp</code></li>
284 <p>Once Apache has been compiled, it needs to be installed in
285 its server root directory. The default is the
286 <code>\Apache2</code> directory, of the same drive.</p>
288 <p>To build and install all the files into the desired folder
289 <em>dir</em> automatically, use one of the following
290 <code>nmake</code> commands:</p>
292 <div class="example"><pre>
293 nmake /f Makefile.win installr INSTDIR=<em>dir</em>
295 nmake /f Makefile.win installd INSTDIR=<em>dir</em>
298 <p>The <em>dir</em> argument to <code>INSTDIR</code> gives
299 the installation directory; it can be omitted if Apache is
300 to be installed into <code>\Apache2</code>.</p>
302 <p>This will install the following:</p>
305 <li><code><em>dir</em>\bin\Apache.exe</code> - Apache
308 <li><code><em>dir</em>\bin\ApacheMonitor.exe</code> - Service
309 monitor taskbar icon utility</li>
311 <li><code><em>dir</em>\bin\htdigest.exe</code> - Digest auth
312 password file utility</li>
314 <li><code><em>dir</em>\bin\htdbm.exe</code> - SDBM auth
315 database password file utility</li>
317 <li><code><em>dir</em>\bin\htpasswd.exe</code> - Basic auth
318 password file utility</li>
320 <li><code><em>dir</em>\bin\logresolve.exe</code> - Log file
321 dns name lookup utility</li>
323 <li><code><em>dir</em>\bin\rotatelogs.exe</code> - Log file
326 <li><code><em>dir</em>\bin\wintty.exe</code> - Console window
329 <li><code><em>dir</em>\bin\libapr.dll</code> - Apache
330 Portable Runtime shared library</li>
332 <li><code><em>dir</em>\bin\libaprutil.dll</code> - Apache
333 Utility Runtime shared library</li>
335 <li><code><em>dir</em>\bin\libhttpd.dll</code> - Apache Core
338 <li><code><em>dir</em>\modules\mod_*.so</code> - Loadable
341 <li><code><em>dir</em>\conf</code> - Configuration
344 <li><code><em>dir</em>\logs</code> - Empty logging
347 <li><code><em>dir</em>\include</code> - C language header
350 <li><code><em>dir</em>\lib</code> - Link library files</li>
353 <h3><a name="projectcomponents-warn" id="projectcomponents-warn">Warning about building Apache from the development tree</a></h3>
357 <div class="note">Note only the <code>.dsp</code> files are maintained between <code>release</code>
358 builds. The <code>.mak</code> files are NOT regenerated, due to the tremendous
359 waste of reviewer's time. Therefore, you cannot rely on the <code>NMAKE</code>
360 commands above to build revised <code>.dsp</code> project files unless you
361 then export all <code>.mak</code> files yourself from the project. This is
362 unnecessary if you build from within the Microsoft
363 Developer Studio environment.</div>
365 <div class="note">Also note it is very worthwhile to build the <code>BuildBin</code>
366 target project (or the command line <code>_apacher</code> or
367 <code>_apached</code> target) prior to exporting the make files.
368 Many files are autogenerated in the build process. Only a full
369 build provides all of the dependent files required to build proper
370 dependency trees for correct build behavior.</div>
372 <p>In order to create distribution <code>.mak</code> files, always review
373 the generated <code>.mak</code> (or <code>.dep</code>) dependencies for
374 Platform SDK or other garbage includes. The <code>DevStudio\SharedIDE\bin\</code>
375 (VC5) or <code>DevStudio\Common\MSDev98\bin\</code> (VC6) directory contains
376 the <code>sysincl.dat</code> file, which must list all exceptions. Update this
377 file (including both forward and backslashed paths, such as both
378 <code>sys/time.h</code> and <code>sys\time.h</code>) to include such dependencies.
379 Including local-install paths in a distributed <code>.mak</code> file will
380 cause the build to fail completely. And don't forget to run
381 <code>srclib/apr/build/fixwin32mak.pl</code> in order to fix absolute
382 paths within the <code>.mak</code> files.</p>
386 </div></div><div id="footer"><p class="apache">Maintained by the <a href="http://httpd.apache.org/docs-project/">Apache HTTP Server Documentation Project</a></p><p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div></body></html>