www-apache-bugdb mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Patterson <Jim.Patter...@Cognos.COM>
Subject os-windows/2153: Apache installation could be simplified by rolling ApacheCore into Apache.exe
Date Tue, 28 Apr 1998 23:30:43 GMT

>Number:         2153
>Category:       os-windows
>Synopsis:       Apache installation could be simplified by rolling ApacheCore into Apache.exe
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    apache
>State:          open
>Class:          change-request
>Submitter-Id:   apache
>Arrival-Date:   Tue Apr 28 16:40:00 PDT 1998
>Originator:     Jim.Patterson@Cognos.COM
>Release:        1.3b6
Windows NT 4.0 SP 3
Visual C++ 5.0
This is a suggestion for simplifying the configuration of the Apache web server for Windows

The Beta versions of Apache have been distributed with a stub mainline executable and a large
DLL (ApacheCore.dll) which contains the actual Apache implementation code. Presumably, this
was done so that the Apache modules could call into the Apache implementation code. However,
it's a little known fact that dynamically loaded modules can call an executable just like
they can call another DLL, if that executable is the program that loaded them.

I would therefore like to suggest that you get rid of ApacheCore.dll and move the code into
Apache.exe, similar to how the configuration is on other systems.


Rather than send diff's of makefiles and workspaces, I'm just going to describe the steps
to make the modification. This also makes a master workspace which controls building of the
entire project. You may already have such a thing; if you don't, it's definitely worth building

- Create (or load, if you already have it) a workspace to go with Apache.dsp .
- "Insert" the ApacheCore.dsp project into this workspace (menu item Project/Insert Project
into Workspace).
- Move the contents of the "Source" and "Header" folders from ApacheCore to "Apache". Move
the "Generated Files" folter to "Apache" as well. Drop ApacheCore.def however; all exports
are handled directly in the source code.
- Remove main_win32.c from this workspace; it won't be needed.
- Remove the WIN32 code surrounding the definition of main (or REALMAIN) in http_main.c
- "Insert" the ap.dsp, ApacheOS.dsp, regex.dsp gen_test_char.dsp and gen_uri_delims.dsp projects
into this workspace. Make Apache depend on all of them (from Project/Dependencies).
- Modify the Apache project's C++ settings to correspond to those of ApacheCore . I think
the only setting is to set Preprocessor/Include path to ".\include" .
- Modify the Apache project's Link settings to agree with ApacheCore. I think the only setting
change is to add wsock32.lib to the library list.
- Set Apache as the Active project.

Now, you should be set up to build the Apache project.

Having build an integrated workspace, you can use the resulting makefile to
build Apache; it's no longer necessary to maintain makefile.nt. This command
will build the Apache executable from scratch. Other projects can be added
to build all modules, for example, or the entire distribution. 

    nmake -f Apache.mak CFG="Apache - Win32 Release"

All we have done at this point is to break the external module DLLs. To fix them up again,
go into each one and change "..\..\CoreX\ApacheCore.lib" to "..\..\ApacheX\Apache.lib" . 
In the workspace, you should also make Apache a dependency of each module. I suggest that
you add all of these module projects into the Apache workspace as well; this makes it easy
to select one, several or all of them to build.
[In order for any reply to be added to the PR database, ]
[you need to include <apbugs@Apache.Org> in the Cc line ]
[and leave the subject line UNCHANGED.  This is not done]
[automatically because of the potential for mail loops. ]

View raw message