Blame docs/manual/platform/win_compiling.html.en

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
Packit 90a5c9
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
Packit 90a5c9
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
              This file is generated from xml source: DO NOT EDIT
Packit 90a5c9
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Packit 90a5c9
      -->
Packit 90a5c9
<title>Compiling Apache for Microsoft Windows - Apache HTTP Server Version 2.4</title>
Packit 90a5c9
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
Packit 90a5c9
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
Packit 90a5c9
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
Packit 90a5c9
<script src="../style/scripts/prettify.min.js" type="text/javascript">
Packit 90a5c9
</script>
Packit 90a5c9
Packit 90a5c9
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
Packit 90a5c9
<body id="manual-page">
Packit 90a5c9

Modules | Directives | FAQ | Glossary | Sitemap

Packit 90a5c9

Apache HTTP Server Version 2.4

Packit 90a5c9
Packit 90a5c9
<-
Packit 90a5c9
Packit 90a5c9
Apache > HTTP Server > Documentation > Version 2.4 > Platform Specific Notes

Compiling Apache for Microsoft Windows

Packit 90a5c9
Packit 90a5c9

Available Languages:  en  |

Packit 90a5c9
 fr  |
Packit 90a5c9
 ko 

Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
Packit 90a5c9
    

There are many important points to consider before you begin compiling

Packit 90a5c9
    Apache HTTP Server (httpd). See Using Apache HTTP
Packit 90a5c9
    Server on Microsoft Windows before you begin.

Packit 90a5c9
Packit 90a5c9
    

httpd can be built on Windows using a cmake-based build system or with

Packit 90a5c9
    Visual Studio project files maintained by httpd developers.  The cmake-based
Packit 90a5c9
    build system directly supports more versions of Visual Studio but currently
Packit 90a5c9
    has considerable functional limitations.

Packit 90a5c9
Packit 90a5c9
  
Packit 90a5c9
Packit 90a5c9
  • Building httpd with cmake
  • Packit 90a5c9

    See also

    Packit 90a5c9
    top
    Packit 90a5c9
    Packit 90a5c9

    Building httpd with the included Visual Studio project files

    Packit 90a5c9
      
    Packit 90a5c9
    Packit 90a5c9
      

    Requirements

    Packit 90a5c9
    Packit 90a5c9
        
    Packit 90a5c9
    Packit 90a5c9
        

    Compiling Apache requires the following environment to be

    Packit 90a5c9
        properly installed:

    Packit 90a5c9
    Packit 90a5c9
        
      Packit 90a5c9
            
    • Packit 90a5c9
              

      Disk Space

      Packit 90a5c9
      Packit 90a5c9
              

      Make sure you have at least 200 MB of free disk space

      Packit 90a5c9
              available. After installation Apache requires approximately
      Packit 90a5c9
              80 MB of disk space, plus space for log and cache files,
      Packit 90a5c9
              which can grow rapidly. The actual disk space requirements
      Packit 90a5c9
              will vary considerably based on your chosen configuration and
      Packit 90a5c9
              any third-party modules or libraries, especially when OpenSSL
      Packit 90a5c9
              is also built.  Because many files are text and very easily
      Packit 90a5c9
              compressed, NTFS filesystem compression cuts these requirements
      Packit 90a5c9
              in half.

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              

      Appropriate Patches

      Packit 90a5c9
      Packit 90a5c9
              

      The httpd binary is built with the help of several patches to

      Packit 90a5c9
              third party packages, which ensure the released code is buildable
      Packit 90a5c9
              and debuggable.  These patches are available and distributed from http://www.apache.org/dist/httpd/binaries/win32/patches_applied/
      Packit 90a5c9
              and are recommended to be applied to obtain identical results as the
      Packit 90a5c9
              "official" ASF distributed binaries.

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              

      Microsoft Visual C++ 6.0 (Visual Studio 97) or later.

      Packit 90a5c9
      Packit 90a5c9
              

      Apache can be built using the command line tools, or from

      Packit 90a5c9
              within the Visual Studio IDE Workbench.  The command line
      Packit 90a5c9
              build requires the environment to reflect the PATH,
      Packit 90a5c9
              INCLUDE, LIB and other variables
      Packit 90a5c9
              that can be configured with the vcvars32.bat script.

      Packit 90a5c9
      Packit 90a5c9
              
      You may want the Visual Studio Processor Pack for your older
      Packit 90a5c9
              version of Visual Studio, or a full (not Express) version of newer
      Packit 90a5c9
              Visual Studio editions, for the ml.exe assembler.  This will allow
      Packit 90a5c9
              you to build OpenSSL, if desired, using the more efficient assembly
      Packit 90a5c9
              code implementation.
      Packit 90a5c9
      Packit 90a5c9
              
      Only the Microsoft compiler tool chain is actively supported by
      Packit 90a5c9
              the active httpd contributors.  Although the project regularly accepts
      Packit 90a5c9
              patches to ensure MinGW and other alternative builds work and improve
      Packit 90a5c9
              upon them, they are not actively maintained and are often broken in
      Packit 90a5c9
              the course of normal development.
      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              

      Updated Microsoft Windows Platform SDK, February 2003 or later.

      Packit 90a5c9
      Packit 90a5c9
              

      An appropriate Windows Platform SDK is included by default in the

      Packit 90a5c9
              full (not express/lite) versions  of Visual C++ 7.1 (Visual Studio 2002)
      Packit 90a5c9
              and later, these users can ignore these steps unless explicitly choosing
      Packit 90a5c9
              a newer or different version of the Platform SDK.

      Packit 90a5c9
      Packit 90a5c9
              

      To use Visual C++ 6.0 or 7.0 (Studio 2000 .NET), the Platform SDK

      Packit 90a5c9
              environment must be prepared using the setenv.bat
      Packit 90a5c9
              script (installed by the Platform SDK) before starting the command
      Packit 90a5c9
              line build or launching the msdev/devenv GUI environment.  Installing
      Packit 90a5c9
              the Platform SDK for Visual Studio Express versions (2003 and later)
      Packit 90a5c9
              should adjust the default environment appropriately.

      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                "c:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32"
      Packit 90a5c9
                "c:\Program Files\Platform SDK\setenv.bat"
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              

      Perl and awk

      Packit 90a5c9
      Packit 90a5c9
              

      Several steps recommended here require a perl interpreter during

      Packit 90a5c9
              the build preparation process, but it is otherwise not required.

      Packit 90a5c9
      Packit 90a5c9
              

      To install Apache within the build system, several files are

      Packit 90a5c9
              modified using the awk.exe utility. awk was chosen since
      Packit 90a5c9
              it is a very small download (compared with Perl or WSH/VB) and
      Packit 90a5c9
              accomplishes the task of modifying configuration files upon
      Packit 90a5c9
              installation.  Brian Kernighan's
      Packit 90a5c9
              http://www.cs.princeton.edu/~bwk/btl.mirror/
      Packit 90a5c9
              site has a compiled native Win32 binary,
      Packit 90a5c9
              http://www.cs.princeton.edu/~bwk/btl.mirror/awk95.exe which
      Packit 90a5c9
              you must save with the name awk.exe (rather than
      Packit 90a5c9
              awk95.exe).

      Packit 90a5c9
      Packit 90a5c9
              
      If awk.exe is not found, Makefile.win's install target
      Packit 90a5c9
              will not perform substitutions in the installed .conf files.
      Packit 90a5c9
              You must manually modify the installed .conf files to allow
      Packit 90a5c9
              the server to start.  Search and replace all "@token@" tags
      Packit 90a5c9
              as appropriate.
      Packit 90a5c9
      Packit 90a5c9
              
      The Visual Studio IDE will only find awk.exe
      Packit 90a5c9
              from the PATH, or executable path specified in the menu option
      Packit 90a5c9
              Tools -> Options -> (Projects ->) Directories.  Ensure
      Packit 90a5c9
              awk.exe is in your system path.
      Packit 90a5c9
      Packit 90a5c9
              
      Also note that if you are using Cygwin tools
      Packit 90a5c9
              (http://www.cygwin.com/)
      Packit 90a5c9
              the awk utility is named gawk.exe and that the file
      Packit 90a5c9
              awk.exe is really a symlink to the gawk.exe
      Packit 90a5c9
              file. The Windows command shell does not recognize symlinks, and
      Packit 90a5c9
              because of this building InstallBin will fail. A workaround is
      Packit 90a5c9
              to delete awk.exe from the cygwin installation and
      Packit 90a5c9
              copy gawk.exe to awk.exe.  Also note the
      Packit 90a5c9
              cygwin/mingw ports of gawk 3.0.x were buggy, please upgrade to 3.1.x
      Packit 90a5c9
              before attempting to use any gawk port.
      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              

      [Optional] zlib library (for mod_deflate)

      Packit 90a5c9
      Packit 90a5c9
              

      Zlib must be installed into a srclib subdirectory named

      Packit 90a5c9
              zlib.  This must be built in-place.  Zlib can be obtained
      Packit 90a5c9
              from http://www.zlib.net/ -- the
      Packit 90a5c9
              mod_deflate is confirmed to work correctly with
      Packit 90a5c9
              version 1.2.3.

      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                nmake -f win32\Makefile.msc
      Packit 90a5c9
                nmake -f win32\Makefile.msc test
      Packit 90a5c9
              

      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              

      [Optional] OpenSSL libraries (for mod_ssl

      Packit 90a5c9
              and ab.exe with ssl support)

      Packit 90a5c9
      Packit 90a5c9
              
      The OpenSSL library is cryptographic software. The country
      Packit 90a5c9
              in which you currently reside may have restrictions on the import,
      Packit 90a5c9
              possession, use, and/or re-export to another country, of encryption
      Packit 90a5c9
              software.  BEFORE using any encryption software, please check your
      Packit 90a5c9
              country's laws, regulations and policies concerning the import,
      Packit 90a5c9
              possession, or use, and re-export of encryption software, to see
      Packit 90a5c9
              if this is permitted.  See
      Packit 90a5c9
              http://www.wassenaar.org/
      Packit 90a5c9
              for more information.
      Packit 90a5c9
      Packit 90a5c9
              

      Configuring and building OpenSSL requires perl to be installed.

      Packit 90a5c9
      Packit 90a5c9
              

      OpenSSL must be installed into a srclib subdirectory

      Packit 90a5c9
              named openssl, obtained from
      Packit 90a5c9
              http://www.openssl.org/source/, in order to compile
      Packit 90a5c9
              mod_ssl or the abs.exe project, which
      Packit 90a5c9
              is ab.c with SSL support enabled.  To prepare OpenSSL to be linked
      Packit 90a5c9
              to Apache mod_ssl or abs.exe, and disable patent encumbered features
      Packit 90a5c9
              in OpenSSL,  you might use the following build commands:

      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                perl Configure no-rc5 no-idea enable-mdc2 enable-zlib VC-WIN32
      Packit 90a5c9
                     -Ipath/to/srclib/zlib -Lpath/to/srclib/zlib
      Packit 90a5c9
                ms\do_masm.bat
      Packit 90a5c9
                nmake -f ms\ntdll.mak
      Packit 90a5c9
              

      Packit 90a5c9
      Packit 90a5c9
              
      It is not advisable to use zlib-dynamic, as that transfers
      Packit 90a5c9
              the cost of deflating SSL streams to the first request which must
      Packit 90a5c9
              load the zlib dll.  Note the suggested patch enables the -L flag to
      Packit 90a5c9
              work with windows builds, corrects the name of zdll.lib and ensures
      Packit 90a5c9
              .pdb files are generated for troubleshooting.  If the assembler is
      Packit 90a5c9
              not installed, you would add no-asm above and use ms\do_ms.bat
      Packit 90a5c9
              instead of the ms\do_masm.bat script.
      Packit 90a5c9
            
      Packit 90a5c9
      Packit 90a5c9
            
    • Packit 90a5c9
              

      [Optional] Database libraries (for mod_dbd

      Packit 90a5c9
              and mod_authn_dbm)

      Packit 90a5c9
      Packit 90a5c9
              

      The apr-util library exposes dbm (keyed database) and dbd (query

      Packit 90a5c9
              oriented database) client functionality to the httpd server and its
      Packit 90a5c9
              modules, such as authentication and authorization.  The sdbm dbm and
      Packit 90a5c9
              odbc dbd providers are compiled unconditionally.

      Packit 90a5c9
      Packit 90a5c9
              

      The dbd support includes the Oracle instantclient package, MySQL,

      Packit 90a5c9
              PostgreSQL and sqlite.  To build these all, for example, set up the
      Packit 90a5c9
              LIB to include the library path, INCLUDE to include the headers path,
      Packit 90a5c9
              and PATH to include the dll bin path of all four SDK's, and set the
      Packit 90a5c9
              DBD_LIST environment variable to inform the build which client driver
      Packit 90a5c9
              SDKs are installed correctly, e.g.;

      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                set DBD_LIST=sqlite3 pgsql oracle mysql
      Packit 90a5c9
              

      Packit 90a5c9
      Packit 90a5c9
              

      Similarly, the dbm support can be extended with DBM_LIST to

      Packit 90a5c9
              build a Berkeley DB provider (db) and/or gdbm provider, by similarly
      Packit 90a5c9
              configuring LIB, INCLUDE and PATH first to ensure the client library
      Packit 90a5c9
              libs and headers are available.

      Packit 90a5c9
      Packit 90a5c9
              

      Packit 90a5c9
                set DBM_LIST=db gdbm
      Packit 90a5c9
              

      Packit 90a5c9
      Packit 90a5c9
              
      Depending on the choice of database distributions, it may be
      Packit 90a5c9
              necessary to change the actual link target name (e.g. gdbm.lib vs.
      Packit 90a5c9
              libgdb.lib) that are listed in the corresponding .dsp/.mak files
      Packit 90a5c9
              within the directories srclib\apr-util\dbd or ...\dbm.
      Packit 90a5c9
      Packit 90a5c9
              

      See the README-win32.txt file for more hints on obtaining the

      Packit 90a5c9
              various database driver SDKs.

      Packit 90a5c9
            
      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
        
      Packit 90a5c9
      Packit 90a5c9
        

      Building from Unix sources

      Packit 90a5c9
      Packit 90a5c9
          
      Packit 90a5c9
      Packit 90a5c9
          

      The policy of the Apache HTTP Server project is to only release Unix sources.

      Packit 90a5c9
          Windows source packages made available for download have been supplied by 
      Packit 90a5c9
          volunteers and may not be available for every release. You can still build 
      Packit 90a5c9
          the server on Windows from the Unix source tarball with just a few additional
      Packit 90a5c9
          steps.

      Packit 90a5c9
      Packit 90a5c9
          
        Packit 90a5c9
            	
      1. Download and unpack the Unix source tarball for the latest version.
      2. Packit 90a5c9
            	
      3. Download and unpack the Unix source tarball for latest version of
      4. Packit 90a5c9
                APR, AR-Util and APR-Iconv, place these sources in directories  httpd-2.x.x\srclib\apr, httpd-2.x.x\srclib\apr-util and httpd-2.x.x\srclib\apr-iconv
        Packit 90a5c9
            	
      5. Open a Command Prompt and CD to the httpd-2.x.x folder
      6. Packit 90a5c9
            	
      7. Run the line endings conversion utility at the prompt;
      8. Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9
            

        Packit 90a5c9
              perl srclib\apr\build\lineends.pl
        Packit 90a5c9
            

        Packit 90a5c9
        Packit 90a5c9
            

        You can now build the server with the Visual Studio development

        Packit 90a5c9
            environment using the IDE. Command-Line builds of the server are not 
        Packit 90a5c9
            possible from Unix sources unless you export .mak files as explained 
        Packit 90a5c9
            below.
        Packit 90a5c9
            

        Packit 90a5c9
        Packit 90a5c9
          
        Packit 90a5c9
        Packit 90a5c9
          

        Command-Line Build

        Packit 90a5c9
        Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9
            

        Makefile.win is the top level Apache makefile.

        Packit 90a5c9
            To compile Apache on Windows, simply use one of the following commands
        Packit 90a5c9
            to build the release or debug flavor:

        Packit 90a5c9
        Packit 90a5c9
            

        Packit 90a5c9
              nmake /f Makefile.win _apacher

        Packit 90a5c9
              nmake /f Makefile.win _apached
        Packit 90a5c9
            

        Packit 90a5c9
        Packit 90a5c9
            

        Either command will compile Apache. The latter will disable

        Packit 90a5c9
            optimization of the resulting files, making it easier to single
        Packit 90a5c9
            step the code to find bugs and track down problems.

        Packit 90a5c9
        Packit 90a5c9
            

        You can add your apr-util dbd and dbm provider choices with the

        Packit 90a5c9
            additional make (environment) variables DBD_LIST and DBM_LIST,
        Packit 90a5c9
            see the comments about [Optional] Database libraries, above.
        Packit 90a5c9
            Review the initial comments in Makefile.win for additional options
        Packit 90a5c9
            that can be provided when invoking the build.

        Packit 90a5c9
        Packit 90a5c9
          
        Packit 90a5c9
        Packit 90a5c9
          

        Developer Studio Workspace IDE Build

        Packit 90a5c9
        Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9
            

        Apache can also be compiled using VC++'s Visual Studio

        Packit 90a5c9
            development environment. To simplify this process, a
        Packit 90a5c9
            Visual Studio workspace, Apache.dsw, is provided.
        Packit 90a5c9
            This workspace exposes the entire list of working .dsp
        Packit 90a5c9
            projects that are required for the complete Apache binary release.
        Packit 90a5c9
            It includes dependencies between the projects to assure that they
        Packit 90a5c9
            are built in the appropriate order.

        Packit 90a5c9
        Packit 90a5c9
            

        Open the Apache.dsw workspace, and select

        Packit 90a5c9
            InstallBin (Release or Debug build,
        Packit 90a5c9
            as desired) as the Active Project. InstallBin causes all
        Packit 90a5c9
            related project to be built, and then invokes Makefile.win to
        Packit 90a5c9
            move the compiled executables and dlls. You may personalize the
        Packit 90a5c9
            INSTDIR= choice by changing InstallBin's Settings,
        Packit 90a5c9
            General tab, Build command line entry. INSTDIR defaults to the
        Packit 90a5c9
            /Apache2 directory. If you only want a test compile (without
        Packit 90a5c9
            installing) you may build the BuildBin project instead.

        Packit 90a5c9
        Packit 90a5c9
            

        The .dsp project files are distributed in Visual Studio 6.0

        Packit 90a5c9
            (98) format. Visual C++ 5.0 (97) will recognize them. Visual Studio
        Packit 90a5c9
            2002 (.NET) and later users must convert Apache.dsw plus
        Packit 90a5c9
            the .dsp files into an Apache.sln plus
        Packit 90a5c9
            .msproj files.  Be sure you reconvert the .msproj
        Packit 90a5c9
            file again if its source .dsp file changes! This is really
        Packit 90a5c9
            trivial, just open Apache.dsw in the VC++ 7.0 IDE once again
        Packit 90a5c9
            and reconvert.

        Packit 90a5c9
        Packit 90a5c9
            
        There is a flaw in the .vcproj conversion of .dsp files. devenv.exe
        Packit 90a5c9
            will mis-parse the /D flag for RC flags containing long quoted /D'efines
        Packit 90a5c9
            which contain spaces.  The command:
        Packit 90a5c9
            

        Packit 90a5c9
              perl srclib\apr\build\cvtdsp.pl -2005
        Packit 90a5c9
            

        Packit 90a5c9
            will convert the /D flags for RC flags to use an alternate, parseable
        Packit 90a5c9
            syntax; unfortunately this syntax isn't supported by Visual Studio 97
        Packit 90a5c9
            or its exported .mak files.  These /D flags are used to pass the long
        Packit 90a5c9
            description of the mod_apachemodule.so files to the shared .rc resource
        Packit 90a5c9
            version-identifier build.
        Packit 90a5c9
        Packit 90a5c9
        	
        Building with OpenSSL 1.1.0 and up
        Packit 90a5c9
            Due to difference in the build structure of OpenSSL begining with version
        Packit 90a5c9
            1.1.0 you will need to convert the dsp files affected with cvtdsp.pl from
        Packit 90a5c9
            APR 1.6 or greater.  The command:
        Packit 90a5c9
            

        Packit 90a5c9
              perl srclib\apr\build\cvtdsp.pl -ossl11
        Packit 90a5c9
            

        Packit 90a5c9
        	
        Packit 90a5c9
        Packit 90a5c9
            

        Visual Studio 2002 (.NET) and later users should also use the Build

        Packit 90a5c9
            menu, Configuration Manager dialog to uncheck both the Debug
        Packit 90a5c9
            and Release Solution modules abs,
        Packit 90a5c9
            mod_deflate and mod_ssl components, as
        Packit 90a5c9
            well as every component starting with apr_db*.  These modules
        Packit 90a5c9
            are built by invoking nmake, or the IDE directly with the
        Packit 90a5c9
            BinBuild target, which builds those modules conditionally
        Packit 90a5c9
            if the srclib directories openssl and/or
        Packit 90a5c9
            zlib exist, and based on the setting of DBD_LIST
        Packit 90a5c9
            and DBM_LIST environment variables.

        Packit 90a5c9
        Packit 90a5c9
          
        Packit 90a5c9
        Packit 90a5c9
          

        Exporting command-line .mak files

        Packit 90a5c9
        Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9
            

        Exported .mak files pose a greater hassle, but they are

        Packit 90a5c9
            required for Visual C++ 5.0 users to build mod_ssl,
        Packit 90a5c9
            abs (ab with SSL support) and/or
        Packit 90a5c9
            mod_deflate.  The .mak files also support a broader
        Packit 90a5c9
            range of C++ tool chain distributions, such as Visual Studio Express.

        Packit 90a5c9
        Packit 90a5c9
            

        You must first build all projects in order to create all dynamic

        Packit 90a5c9
            auto-generated targets, so that dependencies can be parsed correctly.
        Packit 90a5c9
            Build the entire project from within the Visual Studio 6.0 (98) IDE,
        Packit 90a5c9
            using the BuildAll target, then use the Project Menu Export
        Packit 90a5c9
            for all makefiles (checking on "with dependencies".)  Run the following
        Packit 90a5c9
            command to correct absolute paths into relative paths so they will build
        Packit 90a5c9
            anywhere:

        Packit 90a5c9
        Packit 90a5c9
            

        Packit 90a5c9
              perl srclib\apr\build\fixwin32mak.pl
        Packit 90a5c9
            

        Packit 90a5c9
        Packit 90a5c9
            

        You must type this command from the top level

        Packit 90a5c9
            directory of the httpd source tree. Every
        Packit 90a5c9
            .mak and .dep project file within
        Packit 90a5c9
            the current directory and below will be corrected, and the
        Packit 90a5c9
            timestamps adjusted to reflect the .dsp.

        Packit 90a5c9
        Packit 90a5c9
            

        Always review the generated .mak and .dep

        Packit 90a5c9
            files for Platform SDK or other local, machine specific file paths.
        Packit 90a5c9
            The DevStudio\Common\MSDev98\bin\ (VC6) directory contains
        Packit 90a5c9
            a sysincl.dat file, which lists all exceptions.  Update
        Packit 90a5c9
            this file (including both forward and backslashed paths, such as both
        Packit 90a5c9
            sys/time.h and sys\time.h) to ignore such
        Packit 90a5c9
            newer dependencies.  Including local-install paths in a distributed
        Packit 90a5c9
            .mak file will cause the build to fail completely.

        Packit 90a5c9
        Packit 90a5c9
            

        If you contribute back a patch that revises project files, we

        Packit 90a5c9
            must commit project files in Visual Studio 6.0 format. Changes
        Packit 90a5c9
            should be simple, with minimal compilation and linkage flags that
        Packit 90a5c9
            can be recognized by all Visual Studio environments.

        Packit 90a5c9
        Packit 90a5c9
          
        Packit 90a5c9
        Packit 90a5c9
          

        Installation

        Packit 90a5c9
        Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9
            

        Once Apache has been compiled, it needs to be installed in

        Packit 90a5c9
            its server root directory. The default is the
        Packit 90a5c9
            \Apache2 directory, of the same drive.

        Packit 90a5c9
        Packit 90a5c9
            

        To build and install all the files into the desired folder

        Packit 90a5c9
            dir automatically, use one of the following
        Packit 90a5c9
            nmake commands:

        Packit 90a5c9
        Packit 90a5c9
            

        Packit 90a5c9
              nmake /f Makefile.win installr INSTDIR=dir
        Packit 90a5c9
              nmake /f Makefile.win installd INSTDIR=dir
        Packit 90a5c9
            

        Packit 90a5c9
        Packit 90a5c9
            

        The dir argument to INSTDIR provides

        Packit 90a5c9
            the installation directory; it can be omitted if Apache is
        Packit 90a5c9
            to be installed into \Apache22 (of the current
        Packit 90a5c9
            drive).

        Packit 90a5c9
        Packit 90a5c9
          
        Packit 90a5c9
        Packit 90a5c9
          

        Warning about building Apache from the development tree

        Packit 90a5c9
        Packit 90a5c9
            
        Packit 90a5c9
        Packit 90a5c9
            
        Note only the .dsp files are maintained between release
        Packit 90a5c9
            builds. The .mak files are NOT regenerated, due to the tremendous
        Packit 90a5c9
            waste of reviewer's time. Therefore, you cannot rely on the NMAKE
        Packit 90a5c9
            commands above to build revised .dsp project files unless you
        Packit 90a5c9
            then export all .mak files yourself from the project. This is
        Packit 90a5c9
            unnecessary if you build from within the Microsoft
        Packit 90a5c9
            Developer Studio environment.
        Packit 90a5c9
        Packit 90a5c9
          
        Packit 90a5c9
          
        top
        Packit 90a5c9
        Packit 90a5c9

        Building httpd with cmake

        Packit 90a5c9
          
        Packit 90a5c9
        Packit 90a5c9
          

        The primary documentation for this build mechanism is in the

        Packit 90a5c9
          README.cmake file in the source distribution.  Refer to that file
        Packit 90a5c9
          for detailed instructions.

        Packit 90a5c9
        Packit 90a5c9
          

        Building httpd with cmake requires building APR and APR-util separately.

        Packit 90a5c9
          Refer to their README.cmake files for instructions.

        Packit 90a5c9
        Packit 90a5c9
          

        The primary limitations of the cmake-based build are inherited from the APR-util

        Packit 90a5c9
          project, and are listed below because of their impact on httpd:

        Packit 90a5c9
        Packit 90a5c9
          
          Packit 90a5c9
              
        • No cmake build for the APR-iconv subproject is available, and the
        • Packit 90a5c9
                APR-util cmake build cannot consume an existing APR-iconv build.  Thus,
          Packit 90a5c9
                mod_charset_lite and possibly some third-party modules 
          Packit 90a5c9
                cannot be used.
          Packit 90a5c9
              
        • The cmake build for the APR-util subproject does not support most of the
        • Packit 90a5c9
                optional DBM and DBD libraries supported by the included Visual Studio
          Packit 90a5c9
                project files.  This limits the database backends supported by a number of
          Packit 90a5c9
                bundled and third-party modules.
          Packit 90a5c9
            
          Packit 90a5c9
          Packit 90a5c9
            
          Packit 90a5c9
          Packit 90a5c9

          Available Languages:  en  |

          Packit 90a5c9
           fr  |
          Packit 90a5c9
           ko 

          Packit 90a5c9
          top

          Comments

          Notice:
          This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.
          Packit 90a5c9
          <script type="text/javascript">
          Packit 90a5c9
          var comments_shortname = 'httpd';
          Packit 90a5c9
          var comments_identifier = 'http://httpd.apache.org/docs/2.4/platform/win_compiling.html';
          Packit 90a5c9
          (function(w, d) {
          Packit 90a5c9
              if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
          Packit 90a5c9
                  d.write('
          <\/div>');
          Packit 90a5c9
                  var s = d.createElement('script');
          Packit 90a5c9
                  s.type = 'text/javascript';
          Packit 90a5c9
                  s.async = true;
          Packit 90a5c9
                  s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
          Packit 90a5c9
                  (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
          Packit 90a5c9
              }
          Packit 90a5c9
              else { 
          Packit 90a5c9
                  d.write('
          Comments are disabled for this page at the moment.<\/div>');
          Packit 90a5c9
              }
          Packit 90a5c9
          })(window, document);
          Packit 90a5c9
          //--></script>
          Packit 90a5c9

          Copyright 2018 The Apache Software Foundation.
          Licensed under the Apache License, Version 2.0.

          Packit 90a5c9

          Modules | Directives | FAQ | Glossary | Sitemap

          <script type="text/javascript">
          Packit 90a5c9
          if (typeof(prettyPrint) !== 'undefined') {
          Packit 90a5c9
              prettyPrint();
          Packit 90a5c9
          }
          Packit 90a5c9
          //--></script>
          Packit 90a5c9
          </body></html>