I want to build a static version of Xerces v2.6.0 for Borland v6 sp4. I
would just as soon avoid using the Borland IDE to do the build as that
brings in additional complexity.
Can anyone provide any hints for how to make a modified version of the
existing mak file?
Or how else to easily get it done? Maybe run a lib utility on the
directory of obj files that the build of the dynamic link library creates?
Since the static lib is of course NOT a dll I want to avoid linking in
DllMain. I see DllMain in two files:
File src\xercesc\com\xml4com.cpp:
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
if (!PrxDllMain(hInstance, dwReason, lpReserved))
File src\xercesc\util\MsgLoaders\Win32\Win32MsgLoader.cpp:
BOOL APIENTRY DllMain(HINSTANCE hModule,
BOOL APIENTRY DllMain(HINSTANCE hModule,
After running both the command line make file for making the dll and the
Borland project for making the dll I see that Win32MsgLoader does not
have an obj file in the output directories generated by the builds.
Also, xml4com does not have an obj file.
I also see DllEntryPoint in XercesLib.cpp here:
\xerces-c-src_2_6_0\Projects\Win32\BCC.551\Xerces-all\XercesLib\XercesLib.cpp
and that directory also has the XercesLib.mak that Xerces-all.mak includes.
That is where the DllEntryPoint is coming from, correct? If so, can I
just make a different XercesLib.mak? Would I have to remove the
XercesLib.cpp and .obj from it?
Here are parts of XercesLib.mak which has the big list of objs and the
XercesLib.cpp for the DllEntryPoint. Xerces-all.mak includes XercesLib.mak:
#
---------------------------------------------------------------------------
!if !$d(BCB)
BCB = $(MAKEDIR)\..
!endif
#
---------------------------------------------------------------------------
TARGETPATH=..\..\..\..\..\Build\Win32\BCC.551
PROJECT = $(TARGETPATH)\xerces-bor_$(XERCESVER).dll
!if $d(WITHDEPRDOM)
DEPRDOM_PATH=..\..\..\..\..\src\xercesc\dom\deprecated
DEPRDOM_DEFINE=;PROJ_DEPRECATED_DOM
DEPRDOM_OBJFILES = \
$(TARGETPATH)\obj\AttrImpl.obj
....
...
!endif
OBJFILES = $(TARGETPATH)\obj\XercesLib.obj \
$(TARGETPATH)\obj\Win32PlatformUtils.obj \
....
MAINSOURCE = XercesLib.cpp
Note the line above with the MAINSOURCE. Well, I don't really want one
of those I think. Then it also shows up in the OBJFILES list. Plus there
is the "PROJECT = " line that specifies the dll. Can I just shift that
to .lib and get a lib file out? I don't normally muck around at this
level and so I don't know my way around Borland make syntax or all the
stuff specific to Xerces.
Here is the first part of the Xerces-all.mak file. Can I leave it
unchanged if I just change my copy of XercesLib.mak?
#------------------------------------------------------------------------------
!ifndef ROOT
ROOT = $(MAKEDIR)\..
!endif
#------------------------------------------------------------------------------
MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
DCC = $(ROOT)\bin\dcc32.exe $**
BRCC = $(ROOT)\bin\brcc32.exe $**
#------------------------------------------------------------------------------
default: all
#------------------------------------------------------------------------------
# Rules for building from command prompt
MakeBuildDirs: MakeBuildDirs.bat
call $**
MAKEN = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f
PROJECTNAMES = XercesLib DOMCount DOMPrint SAXCount SAXPrint SAX2Count
SAX2Print \
DOMTest DOMMemTest DOMRangeTest DOMTraversal EncodingTest InitTermTest \
ThreadTest MemHandlerTest XSerializerTest PSVIWriter SCMPrint MemParse
Redirect \
StdInParse PParse EnumVal SEnumVal CreateDOMDocument XSValueTest
DeprecatedDOMCount \
DOMTypeInfoTest
!include ..\..\..\..\version.incl
XERCESVER=$(VER)
buildall: clearall $(PROJECTNAMES)
all: $(PROJECTNAMES)
clearall:
del /q ..\..\..\..\Build\Win32\BCC.551\*.*
..\..\..\..\Build\Win32\BCC.551\obj\*.*
XercesLib: XercesLib\XercesLib.mak
cd $<
$(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) -DWITHDEPRDOM=$(WITHDEPRDOM)
-DWITHASM=$(WITHASM)
cd ..
DOMPrint: DOMPrint\DOMPrint.mak
cd $<
$(MAKEN) $<.mak -DXERCESVER=$(XERCESVER)
cd ..
and then a bunch of file actions are listed that I've cut out for brevity.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]